一、前言
在SSM-Spring【AOP进阶】中有总结到当我们需要实现事务管理时,我们需要自己编写事务管理的类,并且还需要提供一个获取唯一Connection对象的工具类,这样一来,就稍微显得有点繁琐。因此,在Spring中是有提供事务控制的,我们需要使用时,只需进行声明就行。
本系列的三篇文章主要总结如何通过XML、XML和注解结合、纯注解的方法来声明事务控制。
二、Spring中的事务控制
(一)需了解
1、spring框架为我们提供了一组事务控制的接口。这组接口在spring-tx-x.x.x.RELEASE.jar中;
2、spring的事务控制都是基于AOP的,它既可以使用编程的方式实现,也可以使用配置的方式实现。学习的重点是使用配置的方式实现。
(二)Spring中事务控制的API介绍
1、PlatformTransactionManager
此接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的方法,如下:
1 | TransactionStatus getTransaction(TransactionDefinition definition) : 获取事务状态信息 |
我们在开发中都是使用它的实现类,如下:
1 | //真正管理事务的对象 |
2、TransactionDefinition
它是事务的定义信息对象,里面有如下方法:
1 | String getName() : 获取事务对象名称 |
3、隔离级别
1 | 事务隔离级反映事务提交并发访问时的处理态度 |
4、事务的传播行为
1 | REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一般的选择(默认值) |
5、超时时间
1 | 默认值是-1,没有超时限制。如果有,以秒为单位进行设置 |
6、是否是只读事务
1 | 建议查询时设置为只读 |
7、TransactionStatus
此接口提供的是事务具体的运行状态,方法介绍如下:
1 | //TransactionStatus接口描述了某个时间点上事务对象的状态信息,包含有6个具体的操作 |
二、代码实现
下面则通过案例来介绍如何使用Spring提供的事务控制
(一)项目结构和数据库表
数据库表结构:
该表为spring数据库下的名为account的表
数据库表中的数据:
(二)domain
Account.java:
1 | public class Account implements Serializable { |
(三)dao
IAccountDao.java:
1 | public interface IAccountDao { |
AccountDaoImpl.java:
1 | public class AccountDaoImpl extends JdbcDaoSupport implements IAccountDao { |
(四)service
IAccountService.java:
1 | public interface IAccountService { |
AccountServiceImpl.java:
1 | public class AccountServiceImpl implements IAccountService { |
(五)配置
bean.xml:
1 |
|
(六)jar包坐标
1 | <dependencies> |
三、总结
通过Spring提供好的事务控制,我们可以非常方便的就能实现事务控制,并且所有的方法只需要进行一次配置即可。
Java新手,若有错误,欢迎指正!