SSH 框架面试题涉及到的是三个主要的Java Web开发框架:Struts、Spring 和 Hibernate。下面将详细解释这些框架的相关知识点。
**1. Hibernate 工作原理及使用原因**
Hibernate 是一个流行的ORM(对象关系映射)框架,它的主要工作原理包括以下步骤:
- 读取并解析配置文件,获取数据库连接信息。
- 解析映射文件,建立SessionFactory,它是所有Session的工厂。
- 打开Session,Session是与数据库交互的接口。
- 创建Transaction,处理数据库事务。
- 执行持久化操作,如CRUD(创建、读取、更新、删除)。
- 提交事务,确保数据的一致性。
- 关闭Session和SessionFactory,释放资源。
使用Hibernate的原因:
- 它简化了JDBC代码,减少了重复性工作。
- Hibernate是一个轻量级框架,性能高效,支持多种数据库。
- 它提供了延迟加载机制,提高性能,只在需要时加载数据。
- 支持多种对象关系映射,如一对一、一对多、多对多等。
**2. Hibernate 延迟加载**
延迟加载是指在实际需要时才加载数据,Hibernate通过实体对象和集合的延迟加载实现这一功能。在Hibernate2和3中,分别对实体和集合提供了延迟加载支持。
**3. Hibernate 类之间的关系映射**
Hibernate通过配置文件中的注解或XML映射文件来实现类之间的关系,如:
- one-to-one(一对一)
- one-to-many(一对多)
- many-to-one(多对一)
- many-to-many(多对多)
**4. Hibernate 缓存机制**
- 一级缓存:内部缓存,每个Session都有自己的缓存,事务级别。
- 二级缓存:可选,可以是应用级或分布式缓存,用于跨Session共享数据。
**5. Hibernate 查询方式**
- SQL:直接执行SQL语句。
- Criteria:基于对象的查询,更面向对象。
- HQL(Hibernate Query Language):面向对象的查询语言,类似于SQL。
- 参数查询、命名参数查询、关联查询、分页查询、统计函数等都是HQL支持的功能。
**6. Hibernate 优化策略**
- 避免单向一对多,使用双向一对多。
- 灵活运用单向一对多。
- 使用多对一代替一对一。
- 配置对象缓存,避免集合缓存。
- 选择合适的集合类型,如Bag(无序)和Set(唯一)。
- 使用显式多态处理继承关系。
- 减少表字段,增加表关联,利用二级缓存。
**7. Struts 工作机制及使用原因**
Struts是一个MVC(模型-视图-控制器)框架,其工作流程包括:
- 初始化ActionServlet,读取配置信息。
- 根据请求找到ActionMapping。
- 创建或复用ActionForm,存储表单数据。
- 验证表单数据。
- 如果验证成功,调用Action的execute方法。
- 根据Action返回的ActionForward转发到相应的JSP页面。
使用Struts的原因:
- 它提供了一种组织JSP、Servlet和JavaBean的规范,使代码结构清晰。
- Struts实现了MVC模式,便于分离业务逻辑和展示逻辑。
**8. Spring 框架**
Spring是一个全面的企业级应用框架,虽然题目没有具体提及Spring,但它通常与Struts和Hibernate一起使用,提供依赖注入(DI)、AOP(面向切面编程)、事务管理等功能,使得应用更易于测试和维护。
SSH框架是Java Web开发中常用的组合,它们各自负责不同的职责,共同构建出高效、可维护的Web应用程序。理解并熟练掌握这三个框架的工作原理、特性和优化策略,对于面试和实际开发都是非常重要的。