spring 1.1.3 JDBC编程式事务管理探析(一)

一、我们一般通过下面的代码来应用事务管理:

[Java] view plain copy
  1.   public   void  addEmployee(Employee employee)  throws  SQLException {  
  2.   transactionTemplate.execute(new  TransactionCallback() {  
  3.     public  Object doInTransaction(TransactionStatus ts) {  
  4.       try  {  
  5.         jdbcTemplate.update("INSERT INTO Employee (username,age) VALUES(?, ?)"new  Object[]{ "lizi" , new  Integer( 22 )});  
  6.         jdbcTemplate.update("INSERT INTO Employee (username,age) VALUES(?, ?)"new  Object[]{ "lijun" , new  Integer( 55 )});  
  7.         System.out.println("更新成功" );  
  8.   
  9.       } catch  (Exception ex) {  
  10.         System.out.println("更新失败" );  
  11.         ts.setRollbackOnly();  
  12.       }  
  13.       return   null ;  
  14.     }  
  15.   });  
  16. }  

事务的代码封装在了TransactionTemplate当中。接下来通过几个序列图来剖析事务的应用。

二、TransactionTemplate.execute

二、事务开始getTransaction

getTransaction完成的任务有:

  1. 从DataSource获取新的连接
  2. 将连接的autoCommit属性设置为false。
  3. TransactionSynchronizationManager将(dataSource,连接)名值对作为线程变量保存起来。
  4. Transaction对象也保存了连接的句柄

三、提交事务commit

提交事务:

  1. 调用了连接的commit方法
  2. 将(DataSource,连接)名值对从本地线程变量中删除
  3. 归还(关闭)连接

四、总结

spring jdbc的事务管理的做法与我们通常用的一致.帮我们完成了下列步骤中的1,2,4,5步。

  1. 先创建连接
  2. 再设置连接的自动提交属性为false
  3. 执行SQL语句
  4. 提交事务
  5. 关闭连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值