Java 事务管理
来源:互联网 发布:windows无法访问\\ 编辑:程序博客网 时间:2024/04/28 13:49
从代码出发, 分析Java的事务管理发展
一、JDBC事务
Connection conn = DataSourceUtils.getConnection(); //开启事务conn.setAutoCommit(false);try { Object retVal = callback.doInConnection(conn); conn.commit(); //提交事务 return retVal;}catch (Exception e) { conn.rollback();//回滚事务 throw e;}finally { conn.close();}二、Hibernate事务
Session session = null;Transaction transaction = null;try { session = factory.openSession(); //开启事务 transaction = session.beginTransaction(); transation.begin(); session.save(user); transaction.commit();//提交事务} catch (Exception e) { e.printStackTrace(); transaction.rollback();//回滚事务 return false;}finally{ session.close();}
三、Spring JDBC事务
[A]
public interface PlatformTransactionManager { TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException; void commit(TransactionStatus status) throws TransactionException; void rollback(TransactionStatus status) throws TransactionException;}
//1.获取事务管理器 PlatformTransactionManager txManager = (PlatformTransactionManager) ctx.getBean("txManager"); //2.定义事务属性 DefaultTransactionDefinition td = new DefaultTransactionDefinition(); td.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED); //3开启事务,得到事务状态 TransactionStatus status = txManager.getTransaction(td); try { //4.执行数据库操作 System.out.println(jdbcTempate.queryForInt("select count(*) from tbl_doc")); //5、提交事务 txManager.commit(status); }catch (Exception e) { //6、回滚事务 txManager.rollback(status); }
});
[B]
//1.获取事务管理器PlatformTransactionManager txManager = (PlatformTransactionManager) ctx.getBean("txManager"); //2、定义事务管理的模板TransactionTemplate transactionTemplate = new TransactionTemplate(txManager);//3.定义事务属性transactionTemplate. setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);//4.回调,执行真正的数据库操作,如果需要返回值需要在回调里返回transactionTemplate.execute(new TransactionCallback() { @Override public Object doInTransaction(TransactionStatus status) { //5.执行数据库操作 System.out.println(jdbcTempate.queryForInt("select count(*) from tbl_doc")); return null; }});
0 0
- Java事务管理
- java事务管理
- java事务管理
- Java 事务管理
- java 事务管理
- java事务管理
- java事务管理
- java事务管理
- java事务管理
- java事务管理
- Java 事务管理
- java事务管理
- java事务管理
- java事务管理
- java事务管理
- java jdbc 事务管理
- Java 平台事务管理
- Java 平台事务管理
- Find Peak Element —— Leetcode
- 简单的C++游戏载入界面设计
- c++のeof
- 关于动态代理的初步认识
- 详细研究CSS列表
- Java 事务管理
- 矩阵乘法求斐波那契数列(快速幂)
- MySQL学习笔记(一)--SQL语句
- 懒加载
- VC++6.0设置RTTI,以支持运行时执行dynamic_cast<>等RTTI运算符。
- Android viewpager 切换adapter内存溢出的问题
- lucene
- 关于 (&a+1) 的困惑
- replace与replaceAll的区别