学习Spring事务处理-非常好的文章列表

来源:互联网 发布:搜狐网络大厦地址 编辑:程序博客网 时间:2024/05/22 13:56
1、详解Java的Spring框架中的事务管理方式

简述:用了一个非常详细的例子讲解:Spring的编程性事务处理、声明性事务处理,只讲两个例子,不用把所有的场景列出来,作为初学者,我感觉最好的一篇。


2开涛总结Spring事务处理的方式

在Spring基于aop的声明性事务处理产生前,基于JTA的事务管理将事务管理与数据处理的逻辑混在一起,代码高度耦合;而基于EJB的CMT声明性事务管理,强制要求引入EJB容器的支持,也有很大的限制;Spring提供的就很不错。

编程式事务管理:基于PlatformTransactionManager接口

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);  }  


模版的事务管理:基于PlatformTransactionManager、TransactionTemplate、TransactionCallback

//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;      }  });  

基于aop的声明性事务处理


3、讲解ThreadLocal非常好的文章

彻底理解ThreadLocal

解密ThreadLocal

1 0
原创粉丝点击