"这篇资料是关于hibernate面试的总结,涵盖了从基础到高级的各种知识点,适合具有1到5年工作经验的IT专业人士复习和准备面试。"
在面试中,了解和掌握Hibernate的核心概念和技术是非常重要的。以下是根据提供的部分内容整理出的关键知识点:
1. HibernateTemplate与HibernateDaoSupport:HibernateTemplate是Spring框架中的一个类,用于简化Hibernate的操作,而HibernateDaoSupport则是为自定义DAO提供支持,需要注入SessionFactory。这两个工具可以减少手动管理Session的工作,但现代实践中更多地推荐使用注解驱动的方式。
2. 注解与JPA:Hibernate支持Java Persistence API (JPA),提供了基于注解的实体映射方式,如@Entity、@Table等。同时,还有hibernate-extension扩展提供更丰富的功能。
3. XML与Annotation映射:Hibernate支持通过XML文件或注解进行对象关系映射(O/R Mapping)。XML文件通常以".hbm.xml"为扩展名,而注解则直接在Java类上声明。
4. Spring事务管理:Spring提供了多种事务管理策略,如编程式和声明式事务管理,通过set和get方法配置事务边界。
5. O/R Mapping的优势:O/R Mapping解决了数据库操作与对象模型之间的转换问题,简化了开发流程,提高了代码可读性和可维护性。
6. Hibernate与JDBC的区别:JDBC是低级的数据库访问接口,而Hibernate作为ORM框架,提供了更高层次的抽象,自动处理SQL生成和结果集转换。
7. Map的遍历:示例代码展示了如何遍历Map的键值对,这在处理持久化对象的属性时可能会用到。
8. Hibernate与Spring集成:Hibernate可以通过Spring的Data Access/ORM模块实现无缝集成,提供方便的事务管理和数据访问支持。
9. JPA规范与实现:JPA是一套标准,而Hibernate是其一个具体的实现,理解两者的关系有助于选择合适的ORM解决方案。
10. 第二级别缓存:Hibernate支持第二级别缓存,可以提高性能,但需要注意缓存一致性问题,不恰当的使用可能导致数据不一致。
11. 分页查询:Hibernate提供了分页查询的方法,例如Query的setFirstResult和setMaxResults,避免一次性加载大量数据导致内存压力。
12. Hibernate版本:提及到了Hibernate 016版本,意味着要关注特定版本的特性和改进。
13. field get方法:在Hibernate中,通过getter方法获取属性值,而setter方法用来更新属性,这是对象持久化的常见做法。
14. JTA事务管理:Java Transaction API (JTA) 提供了跨多个数据源的全局事务处理,适用于分布式环境。
15. 数据库主键生成策略:MySQL、SQL Server和Oracle有不同的主键生成策略,如native、identity、uuid、sequence等。
16. Configuration与SessionFactory:Hibernate的Configuration负责配置并创建SessionFactory,SessionFactory则用于创建Session实例,它是线程安全的,而Session是单线程使用的。
17. SessionFactory的生命周期:SessionFactory一旦创建,通常在整个应用生命周期内保持不变,它负责解析配置和映射信息。
18. Session的使用:openSession()用于开启一个新的Session,而getCurrentSession()则在Spring管理的环境中用于获取当前线程绑定的Session。注意,非JTA环境下,每个线程通常只打开一个Session,而在JTA环境下,可能需要考虑多线程的事务管理。
这些知识点覆盖了Hibernate的基础到高级用法,对于准备Hibernate面试的开发者来说是宝贵的参考资料。