当前位置: 首页 > news >正文

面试题02

1. 常见的持久层框架有哪些?

主要持久层框架:

  • MyBatis - 半自动ORM框架
  • Hibernate - 全自动ORM框架
  • Spring Data JPA - 基于JPA规范的框架
  • JdbcTemplate - Spring提供的JDBC模板
  • JOOQ - 面向对象的SQL查询框架
  • MyBatis-Plus - MyBatis的增强工具

2. 什么是半自动?什么是全自动?

半自动(MyBatis):

  • 开发者需要手动编写SQL语句
  • 框架负责SQL执行和结果映射
  • 更灵活,可以优化复杂SQL
  • 学习成本相对较低

全自动(Hibernate):

  • 框架自动生成SQL语句
  • 通过对象关系映射(ORM)自动操作数据库
  • 开发效率高,但复杂查询性能可能不佳
  • 学习曲线较陡峭

3. Mybatis和Hibernate有什么区别?

特性MyBatisHibernate
SQL控制手动编写SQL自动生成SQL
性能可优化复杂SQL复杂查询性能较差
学习曲线平缓陡峭
灵活性高,可编写任意SQL相对较低
缓存一级、二级缓存更完善的缓存机制
适用场景复杂查询、需要SQL优化简单CRUD、快速开发

4. 泛型和Object有什么区别?

泛型的优势:

// 泛型 - 类型安全
List<String> list1 = new ArrayList<>();
list1.add("hello");
String str = list1.get(0); // 不需要强制类型转换// Object - 需要类型转换
List list2 = new ArrayList();
list2.add("hello");
String str = (String) list2.get(0); // 需要强制类型转换,可能ClassCastException

主要区别:

  • 类型安全:泛型在编译期进行类型检查,Object在运行期可能抛出ClassCastException
  • 代码简洁性:泛型不需要强制类型转换
  • 可读性:泛型代码意图更明确
  • 重用性:泛型可以编写更通用的类型安全代码

5. 6. 项目中使用泛型的例子

例子1:统一响应结果封装

// 使用泛型封装统一响应格式
public class Result<T> {private boolean success;private String message;private T data;  // 泛型数据public static <T> Result<T> success(T data) {Result<T> result = new Result<>();result.setSuccess(true);result.setData(data);return result;}
}// 使用
Result<User> userResult = Result.success(user);
Result<List<User>> listResult = Result.success(userList);

例子2:分页查询结果

// 泛型分页结果
public class PageResult<T> {private long total;private List<T> list;  // 泛型列表// 构造方法public static <T> PageResult<T> of(List<T> list, long total) {PageResult<T> result = new PageResult<>();result.setList(list);result.setTotal(total);return result;}
}// 使用
PageResult<User> userPage = userService.getUsers(pageRequest);

例子3:工具类中的泛型方法

// 类似你提供的CopyUtil
public class BeanUtil {public static <T> T copyProperties(Object source, Class<T> targetClass) {// 实现拷贝逻辑return target;}public static <T> List<T> copyList(List<?> sourceList, Class<T> targetClass) {return sourceList.stream().map(source -> copyProperties(source, targetClass)).collect(Collectors.toList());}
}

例子4:Service层泛型使用

// 基础Service接口
public interface BaseService<T, ID> {T findById(ID id);List<T> findAll();T save(T entity);void deleteById(ID id);
}// 具体实现
@Service
public class UserService implements BaseService<User, Long> {@Overridepublic User findById(Long id) {// 实现}@Overridepublic List<User> findAll() {// 实现}
}

CopyUtil`中使用的泛型就是很好的实践,让工具类可以处理任意类型的对象拷贝。

http://www.dtcms.com/a/467020.html

相关文章:

  • 如何办网站 论坛保险网站建设方案
  • 网站开发最新书籍有什么好的手机推荐网站
  • 校园网站建设总体设计crm客户管理系统全称
  • 天津网站开发招聘夸克搜索引擎
  • 影视网站seo描述镇江微信推广平台
  • 网站建设有什么优势成都住建厅官方网站
  • K8S(四)—— Kubectl从入门到精通:K8s资源管理与项目生命周期实战指南
  • 如何建设一个双语的网站网站建设网上学
  • 80MW/160MWh共享储能示范项目技术方案
  • 深圳微信分销网站公司做网站的网站赚钱吗
  • 基于单片机的N型热电偶PID锅炉温度控制系统
  • 做爰全过程免费的视频网站有声音杭州企业自助建站系统
  • 东莞做网站设计制作自己的网站怎么做app吗
  • 网站开发培训光山广州11区排名
  • 生鲜网站建设的项目总结wordpress 空行
  • 今日行情明日机会——20251010
  • 制作系统签名(具体在build\target\product\security\README文件有说明):
  • 网站 备案 初审品牌整合营销机构
  • 做的比较好的返利网站知乎爱做的小说网站
  • 最大字符串配对数目(哈希表实现)
  • 深度学习赋能基因与蛋白质研究:从“盲猜”到“精准导航”的生命科学革命
  • 网站建设毕业读书笔记徐州网站的优化
  • 多决策者博弈论优化模型:从理论到实践的完整解决方案 | 23类约束条件+1368个变量+混合整数规
  • 软考中级习题与解答——第十五章_数据结构与算法应用(1)
  • 河南省建设培训中心网站做一个网站需要什么条件
  • 一级a做爰片免费网站给我看看大朗做网站在
  • 网站开发 确认函地方门户
  • 做一个网站需要多少钱大概公司建网站
  • 态网站设计网站设计 卡片式设计
  • 南昌网站建设公司建设部精神文明建设网站