SSH面试题详解:Hibernate原理与优化

需积分: 4 192 下载量 195 浏览量 更新于2024-12-11 收藏 180KB DOC 举报
"SSH面试题总结,包括Hibernate工作原理、延迟加载、类之间的关联关系、Hibernate缓存机制、查询方式以及Struts的工作机制和使用原因。" SSH面试题中的核心知识点涵盖了许多Java企业级开发中的关键框架,主要讨论了Hibernate和Struts。以下是这些知识点的详细说明: 1. **Hibernate工作原理**: Hibernate是一个对象关系映射(ORM)框架,通过将Java类与数据库表映射,使得开发者可以以面向对象的方式来操作数据库。其工作流程包括: - 读取并解析配置文件,如hibernate.cfg.xml,获取数据库连接信息。 - 解析实体类的映射文件(.hbm.xml),创建SessionFactory对象,它是线程安全的,整个应用只需要一个。 - 打开Session,Session是操作数据库的单元,相当于JDBC中的Connection。 - 创建Transaction,进行事务管理。 - 执行持久化操作,如增删改查。 - 提交事务,确保数据一致性。 - 关闭Session,释放资源。 - 最后关闭SessionFactory。 2. **Hibernate为什么使用**: - 简化数据访问层代码,减少手动编写JDBC SQL的繁琐工作。 - 提供优秀的ORM实现,使得操作数据库更加面向对象。 - 性能高效,因为是轻量级框架,且具有良好的数据库映射灵活性。 3. **Hibernate延迟加载**: 延迟加载是Hibernate提高性能的一种策略,只有在需要数据时才加载,避免了不必要的资源消耗。包括实体对象、集合和属性的延迟加载。 4. **Hibernate类之间的关联关系**: - many-to-one:多对一,一个实体可能与多个其他实体关联。 - one-to-many:一对多,一个实体可以关联多个其他实体。 - many-to-many:多对多,两个实体之间可能存在多个对应关系。 - one-to-one:一对一,一个实体与另一个实体一对一对应。 5. **Hibernate缓存机制**: - 一级缓存:每个Session内部都有,生命周期与Session相同,关闭Session时缓存自动清除。 - 二级缓存:全局共享,需要额外配置,可跨Session使用,但默认不开启。 6. **Hibernate查询方式**: - 本地SQL查询:直接执行SQL语句。 - Criteria查询:提供API,动态构建查询条件。 - HQL(Hibernate Query Language):面向对象的查询语言,类似于SQL。 7. **优化Hibernate**: - 使用双向一对多关联,而非单向,便于数据操作。 - 避免一对一关联,多用多对一,减少数据冗余。 - 配置对象缓存,提高查询效率,但注意集合缓存可能导致数据同步问题。 8. **Struts工作机制**: Struts是一个MVC(Model-View-Controller)框架,它负责处理HTTP请求,分发到相应的Action,Action处理业务逻辑后更新Model,然后返回一个结果(视图)。使用Struts的原因主要是: - 提供了一套规范,使得Web应用的结构更清晰,易于维护。 - 支持国际化、异常处理和文件上传等特性。 - 提供了一系列的拦截器,方便进行数据校验和事务管理。 以上是SSH面试题中关于Hibernate和Struts的常见问题及其答案,这些知识点在Java企业级开发中至关重要。