(转)spring编程式事务管理—PlatformTransactionManager spring4 transaction

JDBC的事务管理在Spring2.0下有两种编程式的实现
(转)spring编程式事务管理—PlatformTransactionManager spring4 transaction
PlatformTransactionManager
TransactionTemplate

对于PlatformTransctionManager,通常,不直接使用它,而是使用它的实现类DataSourceTransactionManager。具体用法如下:

1. 实例化的时候,需要用个数据源作参数
2. 建立事务的定义,使用DefaultTransactionDefinition类,直接new个新的就可以了
3.调用DefaultTransactionDefinition类的setPropagationBehavior方法,参数是TransactionDefinition的常量,例如PROPAGATION_REQUIRED等。

4. 在使用到具体的SQL操作之前,创建一个TransactionStatus类的实例: TransactionStatusstatus = transactionManager.getTransaction(def)。
其中,transactionManager是DataSourceTransactionManager类的实例,def是DefaultTransactionDefinition的实例
5. 之后使用具体的SQL操作,发生异常了,就使用transactionManager.rollback(status)
6. 正常操作的话,就使用transactionManager.commit(status)

例子:

JdbcTemplatetemplate = new JdbcTemplate(datasource);DataSourceTransactionManager tran =newDataSourceTransactionManager(datasource);DefaultTransactionDefinition def = newDefaultTransactionDefinition();//事务定义类def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);TransactionStatus status =tran.getTransaction(def);//返回事务对象try{template.update("Insert intouserinfo(username,password) values('aaaaa','bbbbb')");template.update("Insert intouserinfo(username,password) values('cccc','ddd')");tran.commit(status);}catch (Exception ex) {tran.rollback(status);}



=========================================================
编程式事务管理——TransactionTemplate

对这个类的使用比上个更简单
1. 在具体的SQL语句操作签,实例化它: TransactioinTemplate transactionTemplate =new TransactionTemplate(trasactionManager);
2. 然后就是具体的SQL操作,不过写起来有点复杂:
transactionTemplate.execute(
new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
// 这里执行SQL的操作
// 发生异常的时候status.setRollbackOnl y(),正常的时候直接返回结果
}
}
);
3.如果没有返回值,可以使用TransactionCallbackWithoutResult类。里面的方法调用一样,只不过用了TransactionCallbackWithoutResult的匿名继承。

例子:

finalJdbcTemplate template = new JdbcTemplate(datasource);DataSourceTransactionManager tran = newDataSourceTransactionManager( datasource);TransactionTemplate trantemplate = newTransactionTemplate(tran);trantemplate.execute(new TransactionCallback(){publicObject doInTransaction(TransactionStatus status) {int i= 0;try{template.update("Insert intouserinfo(username,password) values('jjj','kkk')");template.update("Insert intouserinfo(username,password) values('llll','mmm')");i =1;}catch (Exception ex) {ex.printStackTrace();status.setRollbackOnly();i =0;}returnnew Integer(i);}可以去参考spring开发手册上面的上文档!那样更有利你的学习!

  

爱华网本文地址 » http://www.aihuau.com/a/25101015/246076.html

更多阅读

质量受权人转授权人 几个管理技术指南 质量管理体系文件指南

质量受权人(转授权人)几个管理技术指南质量受权人(转授权人)主要物料放行审核制度建立技术指南质量受权人或转授权人在决定一个批次的物料是否放行前,物料放行审核单需包含以下七个方面,但不仅限于以下方面审核评估的情况:1、物料是否是

转载 辅导员如何做好日常管理工作? 辅导员日常事务管理

原文地址:辅导员如何做好日常管理工作?作者:佳尤  近年来高校出现思想政治工作乏力,学生思想道德水准下滑的趋势,已引起社会的广泛关注。作为高校学生思想政治工作骨干力量的辅导员,他们的地位和作用受到社会的质疑。客观地说,辅导员是最

准确界定公共事务管理职能 公共事务管理职能

公务员法第一百零六条规定:"法律、法规授权的具有公共事务管理职能的事业单位中除工勤人员以外的工作人员,经批准参照本法进行管理。"那么,究竟何谓公共事务管理职能,哪些事业单位具有公共事务管理职能,实践中如何"客观、准确、公平

陕西省政府事务管理局 “药企政府事务管理”求解

     当前,随着政府对我国医药行业发展影响的逐渐增大,不少药企纷纷设立政府事务管理部门,以专门管理政府事务。这其中,也不乏在国外取得过成功经验的跨国药企。  1、 据相关资料显示,近年来国内药企纷纷设立政府事务管理部门,专门

李民吉:转板背后的价值管理

 “我上任董事长以后,提出了公司价值管理理念,就是首信要从过去偏好于技术和受制于任务的状态,提升到面向客户的服务价值管理与面向股东的公司价值管理。”  文/本刊记者 严学锋  李民吉是个“IT外行”,然而显然,他成就了一个IT企

声明:《(转)spring编程式事务管理—PlatformTransactionManager spring4 transaction》为网友灵魂是透明的分享!如侵犯到您的合法权益请联系我们删除