现在有个账户表,里面存着用户金额。
如果要真正地做好转账的操作,就要用到事务,否则当出现异常后会出现数据不一致等问题。
一、spring 中的事务管理通常,把事务加在 service 层(业务逻辑层)。
而在 spring 中管理事务可以有 2 种方式实现:
编程式管理:就像上面伪代码那样,这种使用起来不方便。声明式管理:通过配置方式实现,推荐使用。其中,可以基于 XML 方式进行配置,也可以基于注解,显然后者更方便。在 spring 中进行声明式事务管理,底层使用的是 AOP 原理。
二、spring 事务管理 APIspring 提供了一个接口 PlatformTransactionManager ,代表事务管理器。此接口针对不同的框架提供不同的实现类。
利用idea工具,展开结构,使用 jdbcTemplate 用到的是 DataSourceTransactionManager 。
三、使用事务管理 1. 配置文件创建事务管理器。
开启事务注解,使用名称空间 tx。
2. 类上添加事务注解注解 @Transactional 可以加在 service 类上,也可以加到方法上:
加到类上,表示类下所有的方法都添加了事务。加到方法,表示只有该方法添加事务。
接口实现类 UserDaoImpl 。
到测试类里执行一下:
注意,上面的 service 里我手动添加了异常,所以执行后,事务应该是要回滚操作,2 个人的金额仍然各是 1000 。
刷新数据表。
现在我去掉 service 类中的异常 int i = 1/0;,重新执行测试方法:
刷新数据表。
结果正确。
以上就是spring学习JdbcTemplate数据库事务管理的详细内容,更多关于spring JdbcTemplate数据库事务的资料请关注七叶笔记其它相关文章!