zoukankan      html  css  js  c++  java
  • Spring 手动提交事务

      在使用Spring声明式事务时,不需要手动的开启事务和关闭事务,但是对于一些场景则需要开发人员手动的提交事务,比如说一个操作中需要处理大量的数据库更改,可以将大量的数据库更改分批的提交,又比如一次事务中一类的操作的失败并不需要对其他类操作进行事务回滚,就可以将此类的事务先进行提交,这样就需要手动的获取Spring管理的Transaction来提交事务。

    1、applicationContext.xml配置

     1 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     2     <property name="dataSource" ref="dataSource" />
     3 </bean>
     4 
     5 <tx:advice id="txAdvice" transaction-manager="transactionManager">
     6     <tx:attributes>
     7         <tx:method name="*" propagation="REQUIRED" rollback-for="java.lang.Exception" />
     8         <tx:method name="find*" read-only="true" propagation="SUPPORTS" />
     9         <tx:method name="get*" read-only="true" propagation="SUPPORTS" />
    10         <tx:method name="select*" read-only="true" propagation="SUPPORTS" />
    11         <tx:method name="list*" read-only="true" propagation="SUPPORTS" />
    12         <tx:method name="load*" read-only="true" propagation="SUPPORTS" />
    13     </tx:attributes>
    14 </tx:advice>
    15 
    16 <aop:config>
    17     <aop:pointcut id="servicePointCut" expression="execution(* com.xxx.xxx.service..*(..))" />
    18     <aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointCut" />
    19 </aop:config>

    2、手动提交事务

     1 @Resource(name="transactionManager")
     2 private DataSourceTransactionManager transactionManager;
     3 
     4 DefaultTransactionDefinition transDefinition = new DefaultTransactionDefinition();
     5 //开启新事物
     6 transDefinition.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
     7 TransactionStatus transStatus = transactionManager.getTransaction(transDefinition);
     8 try {
     9     //TODO
    10     transactionManager.commit(transStatus);
    11 } catch (Exception e) {
    12     transactionManager.rollback(transStatus);
    13 }
  • 相关阅读:
    doT js模板入门
    @SuppressWarnings忽略警告
    SQL注入
    【转】Oracle 执行动态语句
    连接数据库——模拟ATM机查、存、取、开户功能
    Oracle 函数中动态执行语句
    PowerDesigner建表
    数据库表设计—水电费缴费系统
    GUID全局唯一标识符相关知识了解
    Oracle数据库建表+添加数据练习
  • 原文地址:https://www.cnblogs.com/banning/p/6346669.html
Copyright © 2011-2022 走看看