spring有哪些事务传播属性

不及物动词 其他 40

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring中的事务传播属性用来定义一个事务方法被调用时,如何处理与其他事务的交互。以下是Spring的事务传播属性:

    1. REQUIRED:如果当前存在事务,则加入该事务,如果不存在事务,则新建一个事务。这是默认的传播属性。

    2. SUPPORTS:如果当前存在事务,则加入该事务;如果不存在事务,则以非事务的方式执行。

    3. MANDATORY:如果当前存在事务,则加入该事务;如果不存在事务,则抛出异常。

    4. REQUIRES_NEW:无论当前是否存在事务,都创建一个新的事务,并在该方法执行结束后,提交当前事务,并恢复原先的事务。

    5. NOT_SUPPORTED:以非事务方式执行,并挂起当前事务(如果有)。

    6. NEVER:以非事务方式执行,并拒绝当前事务(如果有)。

    7. NESTED:如果当前存在事务,则在一个新的嵌套事务中执行。如果不存在事务,则创建一个新的事务。

    需要注意的是,事务传播属性只对包含在同一线程中的方法调用起作用,不同线程中的方法调用无法影响事务传播属性。

    以上是Spring中常用的事务传播属性,根据具体的业务需求,选择合适的传播属性可以保证事务的执行方式达到预期。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Spring框架中,事务传播属性用于控制事务方法与其他事务方法的交互方式。Spring框架为我们提供了多种事务传播属性,确保事务的正确性和一致性。下面是Spring框架中常用的事务传播属性:

    1. PROPAGATION_REQUIRED:表示当前方法必须运行在一个事务中。如果调用该方法的方法已经存在一个事务,则加入该事务;否则,创建一个新的事务。

    2. PROPAGATION_SUPPORTS:表示当前方法不需要一个事务环境。如果调用该方法的方法存在一个事务,那么该方法将在该事务中运行;否则,它可以在没有事务的环境中运行。

    3. PROPAGATION_MANDATORY:表示当前方法必须运行在一个事务中。如果调用该方法的方法不存在一个事务,将抛出一个异常。

    4. PROPAGATION_REQUIRES_NEW:表示当前方法必须运行在它自己的事务中。一个新的事务将被启动,如果调用该方法的方法已经存在一个事务,则该事务被挂起。

    5. PROPAGATION_NOT_SUPPORTED:表示当前方法不应该运行在一个事务中。如果存在一个事务,则该事务被挂起。

    6. PROPAGATION_NEVER:表示当前方法不应该运行在一个事务中。如果调用该方法的方法存在一个事务,则抛出一个异常。

    7. PROPAGATION_NESTED:表示当前方法必须在一个已经存在的事务中运行。如果没有事务存在,则开启一个新的事务。

    这些事务传播属性可以通过在方法上使用@Transactional注解或者在XML配置文件中的tx:method元素进行设置。根据具体的业务需求和数据操作的要求,选择合适的事务传播属性可以确保事务的正确性,提高系统的性能和可靠性。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring框架提供了一套丰富的事务传播属性,以支持在多个事务边界下的事务管理。下面是一些常用的事务传播属性。

    1. PROPAGATION_REQUIRED:如果当前存在一个事务,那么加入该事务;如果当前没有事务,则创建一个新的事务。这是最常用的传播属性。

    2. PROPAGATION_SUPPORTS:如果当前存在一个事务,那么加入该事务;如果当前没有事务,则非事务方式执行。

    3. PROPAGATION_MANDATORY:如果当前存在一个事务,那么加入该事务;如果当前没有事务,则抛出异常。

    4. PROPAGATION_REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则将当前事务挂起。

    5. PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则将当前事务挂起。

    6. PROPAGATION_NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。

    7. PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务中执行。嵌套事务是在当前事务的范围内创建一个独立的事务,并且可以独立地回滚或提交。如果当前没有事务,则创建一个新的事务。

    除了上述常用的事务传播属性,Spring还提供了一些其他属性,包括:

    1. TIMEOUT:设置事务超时时间。如果事务执行的时间超过了设置的超时时间,事务管理器将自动回滚该事务。

    2. READ_ONLY:指定事务是否为只读事务。对于只读事务,事务管理器可以优化事务处理过程,提高性能。

    3. ISOLATION:指定事务的隔离级别。Spring提供了多种不同的隔离级别,包括读未提交、读已提交、可重复读和串行化。

    事务传播属性可以通过@Transactional注解或在XML配置文件中进行配置。在使用@Transactional注解时,可以将事务传播属性作为注解的参数进行指定。例如:

    @Transactional(propagation = Propagation.REQUIRED)
    public void doSomething() {
    // 事务操作
    }

    在XML配置文件中配置事务传播属性的示例如下:

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    tx:attributes
    <tx:method name="*" propagation="REQUIRED" />

    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />

    使用事务传播属性可以灵活地控制和管理事务,确保数据一致性和完整性。根据具体的业务需求和场景,选择合适的事务传播属性,可以提高系统的性能和可靠性。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部