spring事务管理

关于spring事务的用法分类如下:
1.png

在实际项目中比较常用的两种方法
1.基于AspectJ的XML方式(基于AOP思想)

在spring配置文件中配置,当程序运行时,spring会自动对<tx:method>中匹配的方法进行aop操作,进行所配置的事务管理

    <!--事务管理器-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <!--注入spring管理的dateSource-->
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <!--配置自动事务代理-->
    <aop:config>
        <!--切入点-->
        <aop:pointcut id="transactionPointCut" expression="execution(* com.learn.service..*.*(..))" />
        <!--切面-->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointCut" />
    </aop:config>

    <!--配置事务增强处理Bean-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!--方法自定义,把哪些方法纳入事务管理-->
            <!--可在此定义propagation传播行为、isolation、rollback-for等事务定义信息-->
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="save*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="persist*" propagation="REQUIRED" />
            <tx:method name="*" read-only="true" />
        </tx:attributes>
    </tx:advice>
2.基于注解的事务管理

同样需要在spring配置文件中配置事务管理器,然后配置事务注解就ok了

    <!--事务管理器-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <!--注入spring管理的dateSource-->
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    
    <!--开启事务注解-->
    <tx:annotation-driven  transaction-manager="transactionManager"/>

然后再在需要添加事务的service层的所在类上添加@Transactional(propagation = Propagation.REQUIRED)注解即可,括号中为需要定义的事务信息


最后附上事务隔离级别以及传播行为相关定义
2.PNG
3.PNG
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 事务简介 所谓事务,指的是程序中可运行的不可分割的最小单位。在生活中事务也是随处可见的。比方说你在Steam上剁手...
    乐百川阅读 686评论 0 5
  • 对大多数Java开发者来说,Spring事务管理是Spring应用中最常用的功能,使用也比较简单。本文主要从三个方...
    sherlockyb阅读 3,228评论 0 18
  • spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate...
    熊熊要更努力阅读 258评论 0 0
  • 这部分的参考文档涉及数据访问和数据访问层和业务或服务层之间的交互。 Spring的综合事务管理支持覆盖很多细节,然...
    竹天亮阅读 1,048评论 0 0
  • 前天也是四月的最后一天,在工作中因为业务沟通不到位引起争吵,越吵越升级了最后豁着对方了,现在越想越后悔了。...
    小窗里的梦阅读 274评论 0 0