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

本文介绍了如何使用 Spring JDBC 的 TransactionTemplate 进行事务管理。详细解释了事务开始(getTransaction)、提交(commit)的过程,并展示了具体的 Java 代码示例。

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

[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. 关闭连接。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值