— hibernate struts2 spring 三大框架 整合原理
与其说hibernate strut2 和spring 整合 不如说 是 spring与hibernage 和 spring与Struts2 的整合
就是把对象交给spring来管理 (Struts2的action对象 ,hibernate 中sessionFactory 对象交给 spring来管理 ) service层中的事务 交给spring来管理
织入事务通知,(事务管理器)。
二 导入jar
Hibernate 需要的jar包
struts2 需要jar 包
注意:有重复包存在.删除低版本的
spring 需要jar
三 spring 与web 项目整合
创建applicationContext.xml
web.xml 启动容器监听器
四 搭建struts2
1 创建action
2 配置struts2配置文件
3 配置web.xml
五 Spring整合Struts2 struts2 负责创建Action的创建及组装
1 开启struts2常量
2 将Action Service spring容器中
3修改struts2 Action的 class 属性
六 搭建Hibernate
1 导入实体类 映射文件 | ORM 元数据
2 hibernate 主要配置文件
3 测试
七 spring整合hibernate
1将hibernate.cfg.xml中的配置转移到applicationContext.xml中
测试
八 完成Dao|service
书写配置dao
public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {
//简化HQL|Criteria查询, 基础增删改查与之前一样
@Override
public void save(Customer c) {
getHibernateTemplate().save(c);
}
@Override
public void delete(Customer c) {
getHibernateTemplate().delete(c);
}
@Override
public void update(Customer c) {
getHibernateTemplate().update(c);
}
@Override
public Customer findById(Long id) {
return getHibernateTemplate().get(Customer.class, id);
}
@Override
//HQL/Criteria
public List<Customer> findAll() {
//HQL
//return (List<Customer>) getHibernateTemplate().find(" from Customer ");
//Criteria
DetachedCriteria dc = DetachedCriteria.forClass(Customer.class);
//查询
//return (List<Customer>) getHibernateTemplate().findByCriteria(dc);
//分页查询
return (List<Customer>) getHibernateTemplate().findByCriteria(dc,0,5);
}
}
配置dao
---
书写service
配置service
测试
、
九 AOP 事务(xml)
事务管理器
事务通知
切面
测试
不配置事务出现异常
十 解决no session 问题
web.xml 配置
十一 总结
关于 spring 整合 hibernate
a.Spring和Hibernate的整合就是spring接管SessionFactory的创建
b.Spring针对Hiberante的操作有一个封装的对象HibernateTemplate
c.和JdbcTemplate一样,HibernateTemplate也有一个HibernateDaoSupport
d.HibernateTemplate和HibernateDaoSupport都在spring-orm-4.2.4.RELEASE.jar中
e.我们Dao采用继承HiberanteDaoSupport的方式编写,它一样不能用于注解配置。