一、TransactionCallback接口
Object doInTransaction(TransactionStatus status)
TransactionTemplate已经搭好了事务框架,我们只需将多条SQL语句放在doInTransaction中执行就可以了。但是SQL语句通过什么方法来执行呢?
二、方法一:获取Connection来执行
获取Connection又有两种方法
1.从TransactionStatus中索得,因为TransactionStatus含有Transaction对象,后者保存了Connection的句柄
- private static Connection getConnection(TransactionStatus ts) {
- JdbcTransactionObjectSupport transObj = (JdbcTransactionObjectSupport)((DefaultTransactionStatus)ts).getTransaction();
- ConnectionHolder holder = transObj.getConnectionHolder();
- Connection con = holder.getConnection();
- return con;
- }
2.从TransactionSynchronizationManager的线程变量中获取
- private Connection getConnection() {
- DataSourceTransactionManager manager = (DataSourceTransactionManager)transactionTemplate.getTransactionManager();
- DataSource ds = manager.getDataSource();
- return DataSourceUtils.getConnection(ds); //
- }
- public static Connection getConnection(DataSource dataSource, boolea

本文详细介绍了如何在Spring中使用TransactionTemplate进行编程式事务管理,包括通过TransactionCallback接口实现事务回调,以及两种执行SQL语句的方法:直接获取Connection和利用JdbcTemplate。同时探讨了JdbcTemplate的连接来源和关闭策略,确保其与事务框架中的连接同步。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



