spring 1.1.3 JDBC编程式事务管理探析(二):如何实现TransactionTemplate.execute的回调接口TransactionCal...

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、TransactionCallback接口

Object doInTransaction(TransactionStatus status)

TransactionTemplate已经搭好了事务框架,我们只需将多条SQL语句放在doInTransaction中执行就可以了。但是SQL语句通过什么方法来执行呢?

二、方法一:获取Connection来执行

获取Connection又有两种方法

1.从TransactionStatus中索得,因为TransactionStatus含有Transaction对象,后者保存了Connection的句柄

[Java] view plain copy
  1. private   static  Connection getConnection(TransactionStatus ts) {  
  2.   JdbcTransactionObjectSupport transObj = (JdbcTransactionObjectSupport)((DefaultTransactionStatus)ts).getTransaction();  
  3.   ConnectionHolder holder = transObj.getConnectionHolder();  
  4.   Connection con = holder.getConnection();  
  5.   return  con;  
  6. }  

2.从TransactionSynchronizationManager的线程变量中获取

[Java] view plain copy
  1. private  Connection getConnection() {  
  2.   DataSourceTransactionManager manager = (DataSourceTransactionManager)transactionTemplate.getTransactionManager();  
  3.   DataSource ds = manager.getDataSource();  
  4.   return  DataSourceUtils.getConnection(ds); //   
  5. }  
这里贴出DataSourceUtils.getConnection(ds)的部分代码:
[Java]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值