2022年Struts-Spring-Hibernate面试精华汇总

0 下载量 60 浏览量 更新于2024-06-29 收藏 47KB DOCX 举报
本文档总结了2022年的Struts、Spring和Hibernate面试题,这三个都是Java企业级开发中的核心技术。首先,我们将重点探讨Hibernate的工作原理: 1. Hibernate的核心流程包括: - 读取并解析配置文件,这包含了数据库连接和映射规则的信息。 - 通过SessionFactory创建会话,用于管理与数据库的交互。 - 在会话期间,可以开启事务(Transaction)进行数据操作。 - 持久化操作,即保存或更新对象到数据库。 - 提交事务确保数据一致性。 - 会话结束后关闭Session,释放资源。 - 最后,关闭SessionFactory。 2. 使用Hibernate的原因: - 提供了对JDBC的高级封装,减少数据访问层的冗余代码。 - 是ORM(Object-Relational Mapping)的主流实现,简化DAO层编码。 - 基于Java反射,实现透明性,而非字节码增强。 - 轻量级架构,具有良好的性能,支持复杂关系处理。 关于延迟加载,Hibernate有以下策略: - Hibernate 2.x版本中,延迟加载实体对象和集合(例如,当查询结果只包含主键时,实际数据在需要时才会加载)。 - Hibernate 3.x引入属性级别的延迟加载,进一步优化内存管理。 关系映射方面,Hibernate支持多种关系类型,如一对多、多对多,通过配置文件中的映射规则实现。 接下来是Hibernate的缓存机制: - 内部一级缓存(应用事务级),存储在应用程序内存中。 - 二级缓存(可选)包括应用级缓存和分布式缓存,适用于数据稳定且频繁访问的情况。 - 提供多种查询方式,如SQL查询、Criteria API、HQL(Hibernate Query Language)等,支持属性查询、参数查询、关联查询和分页。 最后,讨论了如何优化Hibernate的使用: - 推荐双向一对多关联,避免单向关系带来的性能问题。 - 灵活运用单向一对多关联,减少数据冗余。 - 使用对象缓存而不是集合缓存。 - 选择适当的集合类型,如Bag避免循环引用。 这份面试题总结覆盖了Hibernate的基础概念、核心功能、优化策略以及与Spring和Struts整合的相关知识点,对于准备2022年面试者来说,理解和掌握这些内容至关重要。