• 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 }
  • 相关阅读:
    Win10怎么设置虚拟内存?
    树莓派 —— USB 摄像头简单测试 (拍照 & 视频)
    如何设置树莓派 VNC 的分辨率
    树莓派 VNC Viewer 远程桌面配置教程
    数据库开发——MySQL——数据的增删改查
    数据库开发——MySQL——foreign key
    数据库开发——MySQL——primary key
    一种关闭按钮
    oracle下 启动subversion命令 及 oracle相关服务启动备忘
    table内 获取同一行 其他列的value
  • 原文地址:https://www.cnblogs.com/banning/p/6346669.html
Copyright © 2020-2023  润新知