Java面试精华:ORM、持久层与Hibernate深入解析

需积分: 1 6 下载量 123 浏览量 更新于2024-07-19 收藏 3.57MB PDF 举报
本资源是一份关于Java面试题目的PDF文档,涵盖了Java技术栈中多个重要的概念和实践。以下是部分题目及其涉及的知识点: 1. **ORM(对象关系映射)** - ORM是一种技术,它允许开发人员通过面向对象的方式来操作数据库,而无需编写复杂的SQL语句。它将数据库表映射到Java对象,简化了数据访问。 2. **持久层设计** - 持久层设计考虑因素包括性能优化、事务管理、异常处理、以及与不同数据库兼容性。常用的持久层框架有Hibernate和MyBatis。 3. **Hibernate的SessionFactory与Session** - SessionFactory用于创建Session实例,非线程安全;Session用于与数据库交互,一个线程不能共享同一个Session,否则可能导致并发问题。load方法用于查找对象,get方法则根据主键获取。 4. **Session的方法** - save(), update(), merge()用于持久化或更新对象,lock()用于锁定对象,saveOrUpdate()用于检测并相应地保存或更新,而persist()则是用于新对象的插入。 5. **Session加载实体对象过程** - 包括查询、加载数据到缓存、填充对象属性等步骤。 6. **Query接口的list和iterate方法** - list返回所有匹配结果作为一个List,iterate则遍历结果集,通常用于迭代器。 7. **Hibernate分页查询和锁机制** - 分页查询通常使用Query的setFirstResult和setMaxResults方法。悲观锁(如行锁)确保数据一致性,乐观锁(如版本号)则依赖于数据库支持。 8. **实体对象状态转换** - 主要有三态:持久态(已保存在数据库中)、瞬时态(未保存,仅存在于内存中)和脱管态(从Session中移除但仍存在缓存中)。 9. **延迟加载与Session关闭** - 延迟加载可以提高性能,但关闭Session时未加载的数据可能会丢失,需要合理管理。 10. **多对多关联和映射** - 通过外键和中间表来实现,涉及一对多和多对多的关系。 11. **继承映射** - 可能涉及单向或多向继承,以及懒加载策略。 12. **Hibernate优化策略** - 包括缓存优化、查询优化、减少SQL语句等。 13. **MyBatis与Hibernate对比** - MyBatis更强调SQL的灵活性,@OneToMany的mappedBy属性控制关联方向。 14. **MyBatis的命名空间和动态SQL** - 命名空间用于组织相关映射文件,动态SQL允许在运行时构建和执行SQL。 15. **Spring框架** - IoC(依赖注入)是Spring的核心思想,Bean的作用域包括单例、prototype等,AOP涉及多个核心概念,如Joinpoint、Pointcut、Advice等,是面向切面编程的实现。 这份文档深入浅出地涵盖了Java面试中常见的技术细节,对于准备Java开发者职位面试或者进一步理解和实践Java技术非常有价值。