spring中声明式事务管理控制介绍以及使用XML方式实现
环境准备
用户访问—》Action --》Service---》Dao
一个业务的成功: 调用的service是执行成功的,意味着service中调用的所有的dao是执行成功的。 事务应该在Service层统一控制。
1)没有应用事务的代码:
2)模拟:
在service中调用2次dao, 希望其中一个dao执行失败,整个操作要回滚。
开发步骤:
1. 后台环境准备
数据库、表/entity/dao/service
2. dao 的实现用JdbcTemplate
3. 对象创建都有Spring容器完成
事务控制概述
编程式事务控制
自己手动控制事务,就叫做编程式事务控制。
Jdbc代码:
Conn.setAutoCommite(false); // 设置手动控制事务
Hibernate代码:
Session.beginTransaction(); // 开启一个事务
【细粒度的事务控制: 可以对指定的方法、指定的方法的某几行添加事务控制】
(比较灵活,但开发起来比较繁琐: 每次都要开启、提交、回滚.)
声明式事务控制
Spring提供了对事务的管理, 这个就叫声明式事务管理。
Spring提供了对事务控制的实现。用户如果想用Spring的声明式事务管理,只需要在配置文件中配置即可; 不想使用时直接移除配置。这个实现了对事务控制的最大程度的解耦。
Spring声明式事务管理,核心实现就是基于Aop。
【粗粒度的事务控制: 只能给整个方法应用事务,不可以对方法的某几行应用事务。】
(因为aop拦截的是方法。)
Spring声明式事务管理器类:
Jdbc技术:DataSourceTransactionManager
Hibernate技术:HibernateTransactionManager
XML方式实现
步骤:
1) 引入spring-aop相关的4个jar文件
2) 引入aop名称空间 【XML配置方式需要引入】
3) 引入tx名称空间 【事务方式必须引入】
第一步:导入相关的jar包(事务要导入aop相关的jar包)
第二步:创建实体类Dept ,以及相关的dao层中的DeptDao service层中DeptService
第三步:配置bean.xml文件
第四步:测试类App