【Spring学习35】Spring事务(5):编程式事务
来源:互联网 发布:俄罗斯民族性格 知乎 编辑:程序博客网 时间:2024/06/05 15:42
Spring提供了对编程式事务和声明式事务的支持,编程式事务允许用户在代码中精确定义事务的边界,而声明式事务(基于AOP)有助于用户将操作与事务规则进行解耦。简单地说,编程式事务侵入到了业务代码里面,但是提供了更加详细的事务管理;而声明式事务由于基于AOP,所以既能起到事务管理的作用,又可以不影响业务代码的具体实现。
Spring提供两种方式的编程式事务管理,分别是:使用TransactionTemplate和直接使用PlatformTransactionManager。
1、使用TransactionTemplate
采用TransactionTemplate和采用其他Spring模板,如JdbcTempalte和HibernateTemplate是一样的方法。它使用回调方法,把应用程序从处理取得和释放资源中解脱出来。如同其他模板,TransactionTemplate是线程安全的。代码片段:
TransactionTemplate tt = new TransactionTemplate(); // 新建一个TransactionTemplateObject result = tt.execute( new TransactionCallback(){ public Object doTransaction(TransactionStatus status){ updateOperation(); return resultOfUpdateOperation(); } }); // 执行execute方法进行事务管理
使用TransactionCallback()可以返回一个值。如果使用TransactionCallbackWithoutResult则没有返回值。
2、使用PlatformTransactionManager
示例如下:
//定义一个某个框架平台的TransactionManager,如JDBC、HibernateDataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();// 设置数据源dataSourceTransactionManager.setDataSource(this.getJdbcTemplate().getDataSource());// 定义事务属性DefaultTransactionDefinition transDef = new DefaultTransactionDefinition(); // 设置传播行为属性transDef.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRED); // 获得事务状态TransactionStatus status = dataSourceTransactionManager.getTransaction(transDef); try { // 数据库操作 dataSourceTransactionManager.commit(status);// 提交} catch (Exception e) { dataSourceTransactionManager.rollback(status);// 回滚}
0 0
- 【Spring学习35】Spring事务(5):编程式事务
- Spring编程式事务
- Spring编程式事务
- spring 编程式事务
- spring编程式事务
- spring编程式事务
- spring编程式事务
- spring 编程式事务
- Spring编程式事务
- Spring编程式事务
- spring的编程式事务
- spring使用编程式事务
- Spring编程式事务详解
- spring jdbc 编程式事务
- Spring编程式事务实现
- Spring事务(编程式事务、声明式事务、事务传播)
- spring管理事务声明式事务和编程式事务
- Spring配置使用编程式事务
- “字母公司”名字的“真相”
- gcc编译器实验
- iptables知识点
- bzoj3667: Rabin-Miller算法
- 浅谈ASP.NET MVC
- 【Spring学习35】Spring事务(5):编程式事务
- 回收子进程的资源
- bzoj4802: 欧拉函数
- Class.forName的作用以及为什么要用它【转】
- winhex修改JPG文件编码
- 堆栈的区别,很详细
- Android中软键盘的引出的问题,所做的小Demo
- 【Spring学习36】Spring事务(6):声明式事务(集合Mybatis)
- 万圣节派对