Struts+Spring+Hibernate面试必备知识点解析

需积分: 10 1 下载量 163 浏览量 更新于2024-09-16 收藏 62KB DOC 举报
"struts+spring+hibernate 面试题集" 在IT行业中,Struts、Spring和Hibernate是三个非常重要的开源框架,它们分别在MVC架构、依赖注入和对象关系映射方面发挥着核心作用。下面我们将深入探讨这些框架在面试中常见的知识点。 1. Action是否线程安全: Struts中的Action类默认情况下不是线程安全的,因为不同的请求可能会共享同一个Action实例。为了确保线程安全,可以采用以下策略:声明Action为局部变量,每次请求创建新的实例;扩展RequestProcessor,使得每次请求都创建Action;或者在Spring中使用`scope="prototype"`来管理Action,确保每个请求都得到一个新的实例。 2. Struts实现MVC架构: MVC模式包括模型(Model)、视图(View)和控制器(Controller)。在Struts中,模型通常由JavaBean或POJO构成,控制器由Action实现,视图由一组JSP文件和自定义标签组成。Action接收用户请求,处理业务逻辑后,转发到相应的视图进行展示。 3. Struts的关键对象: - Action:负责接收请求,执行业务逻辑,并将结果转发到相应的视图。 - ActionForm:用于封装请求参数,通常对应于HTML表单中的数据。 - DynaValidatorForm:动态表单对象,提供了动态验证功能。 - ActionMapping:存储了配置文件中action节点的信息,用于映射请求到特定的Action。 4. AOP和IOC在Spring中的应用: - AOP(面向方面编程)关注程序的横切关注点,如日志、事务管理等。Spring通过动态代理或字节码增强实现AOP,允许开发者在不修改原有代码的情况下插入横切关注点。 - IOC(依赖注入)是Spring的核心特性,它管理对象的生命周期和依赖关系,使得对象之间的耦合度降低。Spring通过构造器注入、setter注入等方式实现IOC。 5. Hibernate查询数据的方式: - HQL(Hibernate Query Language):面向对象的查询语言,与SQL类似,但操作的是对象和实体。 - SQL查询:直接执行SQL语句,可以充分利用数据库的功能。 - 条件查询:通过Criteria API或Query API构建动态查询,根据条件筛选数据。 6. Hibernate的load()与get()区别: - load()方法假设给定的ID对应的数据一定存在于数据库中,返回的是一个代理对象,延迟加载数据。当尝试访问对象属性时,如果在数据库中找不到该记录,则抛出`ObjectNotFoundException`。 - get()方法首先检查一级缓存,然后二级缓存,最后数据库。如果找不到对应的数据,返回null。相比load(),get()在获取对象时会立即查询数据库,确保返回的是实际数据或null。 7. Hibernate的延迟加载和OpenSessionInView: - 延迟加载(Lazy Loading)是在需要时才加载关联的对象,以提高性能。它需要在一个有效的Session范围内进行,否则会出现“懒加载异常”。 - OpenSessionInView(OSIV)模式是解决延迟加载问题的一种策略,它在整个HTTP请求处理过程中保持Session打开,确保在视图渲染时能够访问到Session中的数据。然而,OSIV也可能带来性能问题,因此在大型应用中常被更精细的事务管理策略取代。 以上内容详细解释了Struts、Spring和Hibernate在面试中可能涉及的关键知识点,涵盖了框架的核心特性和使用技巧,有助于面试者准备相关问题。