Spring+Struts2+Hibernate3 整合详解

需积分: 0 2 下载量 135 浏览量 更新于2024-09-15 收藏 363KB DOC 举报
"Struts2+Spring3+Hibernate3整合文档" 本文档主要阐述了如何在Java Web开发中整合Struts2、Spring3和Hibernate3这三个流行的技术框架。这种整合通常用于构建MVC(Model-View-Controller)架构的应用程序,以实现更好的分层和解耦。 ### 1. Spring + Hibernate 整合 在Spring与Hibernate的整合中,Spring接管了对Hibernate的管理,包括SessionFactory和Session的生命周期。这使得我们不再需要在hibernate.cfg.xml文件中配置数据库连接信息,而是将这些配置转移到Spring的配置文件中。 #### (1) 配置`applicationContext-common.xml` 在`applicationContext-common.xml`文件中,你需要配置以下内容: - 数据源(DataSource):用于连接数据库,通常使用Apache Commons DBCP或C3P0等库。 - SessionFactory:配置Hibernate的SessionFactory,这里会引用数据源,并指定实体类的包名以便扫描。 - Hibernate事务管理器(PlatformTransactionManager):Spring提供了一种声明式事务管理的方式,通过这个事务管理器实现。 #### (2) 使用HibernateDAOSupport和HibernateTemplate - `HibernateDAOSupport`:这是一个抽象基类,提供了对Session和SessionFactory的访问方法,以及获取`HibernateTemplate`实例的`getHibernateTemplate()`方法。 - `HibernateTemplate`:提供了一系列预定义的持久化操作方法,如增删查改,简化了数据库操作。 在实际应用中,你可以创建一个DAO类,继承自`HibernateDAOSupport`,然后利用`HibernateTemplate`进行数据操作。 ### 2. Spring + Struts2 整合 #### (1) 配置`web.xml` - Spring的上下文监听器(ContextLoaderListener):负责加载Spring的根上下文(`applicationContext.xml`)。 - Struts2的过滤器(`filter-class: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`):处理HTTP请求并执行相应的Action。 #### (2) 配置`struts.xml` 在`struts.xml`文件中,通过Spring插件(`<result-type>`类型为`spring`),我们可以使用Spring的IOC容器来管理Struts2的Action。Action类不再直接实例化,而是引用在`applicationContext.xml`中定义的bean ID。 #### (3) 注意事项 由于Struts2的Action默认是每次请求创建一个新的实例,但Spring使用的是单例模式管理bean,这可能导致问题。为了解决这个问题,你需要在`applicationContext.xml`中配置Action类为 prototype 或 request 基本作用域,确保每个请求都有一个新的Action实例。 整合这三个框架的主要目的是为了充分利用它们的优势:Spring提供依赖注入和事务管理,Hibernate处理数据持久化,而Struts2则负责业务逻辑和视图的交互。通过这种方式,开发者可以创建出更加灵活、可维护的Web应用程序。