引言
前面简单的的学习了如何使用Struts2和Hibernate,学习了基本的配置方法和使用方法,最后需将新学习的表现层框架Struts2和持久层框架Hibernate,和Spring整合起来,以一个简单的验证登录案例,来理解其基本使用方法。
Spring和Hibernate整合就是为了让Spring管理Hibernate的session和sessionFactory。类似Mybatis,在里面配置管理sessionFactory和MappingConfigurer。
(1)导包
Hibernate使用相关包: hibernate-core包,MySql-connector包,javassist包
连接池:dbcp,或者使用阿里的c3p0,这里使用c3p0
Spring使用相关包:spring-orm(对象关系映射包)
测试相关包:junit包
(2)配置文件
与MyBatis类似,MyBatis在与Spring整合之前,需要一个专门的MyBatis配置文件,其中有配置数据库连接以及Mapper映射文件的位置,如果与Spring整合后,MyBatis的相关连接配置和Mapper配置都放到了Spring配置文件中。与MyBatis类似,Hibernate与Spring整合后,也是在Spring的配置文件中进行数据库连接配置,以及配置Mapper文件xxx.hbm.xml文件,因此配置文件需要一个spring-*.xml,以及若干类名.hbm.xml文件。
spring-*.xml
(2-1)需配置数据库连接池,这次用的c3p0配置dataSource bean,与MyBatis类似,也需要配置sessionFactory,在sessionFactory里面有hibernatePropeties属性和mappingLocation属性,这两个属性可以完成以前hibernate.cfg.xml的部分配置,如dialect,show_sql,format_sql等配置在hibernatePropeties,而映射文件配置在mappingLocation属性下面。
(2-2)配置hibernateTemplate,如果不整合spring,需要手动得到session对象,然后再调用session对象的query方法获得query对象,最后使用list方法得到查询对象,整合后直接使用hibernateTemplate的API可以直接得到查询对象,因此需要配置。
(2-3)配置事物传播属性,与MyBatis类似,只是具体的实现类不一样,需要引入的属性也不一样,这里需要引入sessionFactory,初始化transactionManager。
user.hbm.xml
user.hbm.xml跟以前一样,配置class,里面添加user实体类和t_user表的映射关系。
(3)实现类
(4)建表 cn_user
(5)测试Service层+DAO层
DAO层需要建立接口,以及接口的实现类,MyBatis是不需要创建实现了的,Hibernate需要。
DAO层:
Service层:
测试类:
测试结果:
测试没有问题就可以接下来整合Struts2+Spring了。
配置跟以前学习的一样,需要导入关键包,以及配置struts.xml和web.xml
(1)导包 struts2-core,struts2-spring-plugin,spring-webmvc,如果测试返回为json,可以导包struts2-json-plugin,以及整合到前面的导包文件了,可以参考前面内容。
(2)配置spring-*.xml(组件扫描),配置struts.xml,还有web.xml(配置listener,context-param,filter)
这里主要再复习下,配置listener的作用是使用它来启动spring容器,而启动容易需要读取配置文件,不配置的话就是默认读取WEB-INF下的applicationContext.xml,如果配置了context-param就会从配置地址读取,filter的配置相当如以前的servlet的配置。
web.xml
struts.xml
(3)filter实现类
(4)jsp页面,登录页面和返回登录信息页面
(5)登录测试
这样就完成了一个简单的Struts2+Spring+Hibernate搭建,并实现简单登录逻辑。
整合Struts2+Spring+Hibernate,需要熟悉没有和Spring整合之前如何配置,有了Spring部分内容在Spring-*.xml文件中进行了集成,另外Spring帮忙自动管理Struts2和Hibernate组件。
SSH学习-Struts2+Spring+Hibernate整合配置使用
原文:https://www.cnblogs.com/shineehcj/p/SSH.html