spring事务处理

来源:互联网 发布:软件体系结构模型 编辑:程序博客网 时间:2024/05/02 04:27

spring两种事务处理机制,一是声明式事务,二是编程式事务,默认的是数据库事务隔离级别

一、声明式事务。基于IOC和AOP机制,对前后方法进行拦截,只需在配置文件做相关的事务声明。由DataSource,TransactionManager, 代理机制三部分组成,一般变化的只是代理机制这部分,即是使用注解还是配置AOP使用拦截器。

<!-- 配置事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- 注解方式配置事物 --> <tx:annotation-driven transaction-manager="transactionManager" />
二、编程式事务。在代码中用编程的方式进行事务处理,可以做到比声明式更细粒度。
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {      private HibernateTransactionManager transactionManager;      private DefaultTransactionDefinition def;        public HibernateTransactionManager getTransactionManager() {          return transactionManager;      }        public void setTransactionManager(HibernateTransactionManager transactionManager) {          this.transactionManager = transactionManager;      }        public void createTransactionDefinition() {          def = new DefaultTransactionDefinition();          def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);          def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);      }        public void saveOrUpdate(User user) {          TransactionStatus status = transactionManager.getTransaction(def);          try {              this.getHibernateTemplate().saveOrUpdate(user);          } catch (DataAccessException ex) {              transactionManager.rollback(status);              throw ex;          }          transactionManager.commit(status);      }  }  






0 0
原创粉丝点击