美文网首页
事务的两种形式

事务的两种形式

作者: 奔向学霸的路上 | 来源:发表于2020-04-07 22:55 被阅读0次

事务的分类

编程式事务:是指在代码中手动的管理事务,缺点:代码侵入性太强

try{
    //todo something
    transactionManager.commit(status);
}catch(Exception e){
    transactionManager.rollback(status);
    throw new myException("", e);
}

声明式事务:基于AOP面向切面,将业务与事务解耦,代码侵入性很低。
声明式事务有两种实现方式:

  1. 基于AspectJ的xml方式配置
<!-- 定义事务管理器 -->
  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
  </bean>

 <!-- 配置事务管理增强 -->
 <!-- 配置事务管理增强 需要指定一个事物管理器-->
 <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="find*" propagation="SUPPORTS" />
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="del*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="*" propagation="REQUIRED" />
        </tx:attributes>
 </tx:advice>

 <!-- 定义切面 -->
 <aop:config>
     <!-- 定义切入点,及切入点的表达式   和id --> 
        <aop:pointcut id="serviceMethod"
            expression="execution(* cn.kgc.service..*.*(..))" />
        <!-- 把增强的引用和切入点的引用组合起来-->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
 </aop:config>
  1. 基于注解的配置
<!-- 定义事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    
    <!-- 开启事务控制的注解支持 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
@Transactional
public class ServiceImpl implements Service {
 
    @Autowired
    private Dao dao;
    
    @Override
    public void insert(Test test) {
        dao.insert(test);
        //抛出unchecked异常,触发事物,回滚
        throw new RuntimeException("test");
    }

参考:https://blog.csdn.net/qq_41205144/article/details/84577162
https://baijiahao.baidu.com/s?id=1661650900351466294&wfr=spider&for=pc

相关文章

  • 事务的两种形式

    事务的分类 编程式事务:是指在代码中手动的管理事务,缺点:代码侵入性太强 声明式事务:基于AOP面向切面,将业务与...

  • @Transactional失效场景

    上一篇:事务的两种形式 @Transactional介绍 @Transactional注解底层使用的是动态代理来进...

  • Zookeeper(三)-持久化

    概述 同mysql/redis类似zk持久化也分为快照(snapshot)和增量事务日志(txnlog)两种形式,...

  • 事务、MySQL与Python交互、Python 中操作 MyS

    1、事务 事务操作分两种:自动事务(默认)、手动事务 手动事务的操作流程 开启事务:start transacti...

  • MySQL数据库的事务transaction

    事务操作分两种:自动事务(默认)、手动事务 手动事务的操作流程 开启事务:start transaction; 进...

  • Index of contents

    一、事务 @TransactionalSpring事务传播行为详解Spring事务管理的两种方式try catch...

  • Spring事物详解

    管理两种方式 spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionT...

  • 通过Thread session管理 jms事务

    JMS事务管理机制有两种 Session管理的事务 外部管理的事务 JmsTransactionManager J...

  • Spring-事务机制

    一、Spring事务 事务管理概述 Spring事务管理分为编程式事务管理和声明式事务管理两种 编程式事务:允许用...

  • 关联规则分析Apriori

    关联分析用来寻找事务之间的相关性,这些关系主要有两种形式,频繁项目集或者关联规则。 关联分析涉及的术语和指标: 术...

网友评论

      本文标题:事务的两种形式

      本文链接:https://www.haomeiwen.com/subject/nwbsphtx.html