spring事务有哪些级别 默认什么级别

worktile 其他 43

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring框架中的事务管理可以通过配置文件或者注解的方式实现,主要有以下几种事务级别:

    1. 事务传播行为级别(Propagation):事务传播行为用于指定在一个事务方法被另一个事务方法调用时,如何使用事务。常用的事务传播行为级别有:
    • REQUIRED(默认级别):如果当前存在一个事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
    • SUPPORTS:如果当前存在一个事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
    • MANDATORY:如果当前存在一个事务,则加入该事务;如果当前没有事务,则抛出异常。
    • REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。
    • NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则挂起当前事务。
    • NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。
    • NESTED:如果当前存在一个事务,则在嵌套事务内执行;如果当前没有事务,则执行REQUIRED同样的操作。
    1. 隔离级别(Isolation):用于指定事务操作与其他并发事务之间的隔离程度。常用的隔离级别有:
    • DEFAULT:采用数据库的默认隔离级别(由数据库管理)。
    • READ_UNCOMMITTED:最低的隔离级别,允许读取未提交的数据。
    • READ_COMMITTED:允许读取已提交的数据,避免脏读。
    • REPEATABLE_READ:保证在同一个事务中多次读取同一数据时,数据保持一致。
    • SERIALIZABLE:最高的隔离级别,保证读取数据的一致性和完整性,但效率较低。
    1. 回滚规则(Rollback):用于指定事务操作发生异常时,是否回滚事务。默认情况下,Spring中的事务是遇到RuntimeException异常时回滚。

    2. 超时设置(Timeout):用于指定事务操作的超时时间,单位为秒。超时时间是指在指定时间内未完成事务操作,则回滚事务。

    3. 只读(ReadOnly):用于指定事务操作是否只读。只读事务通常用于查询操作,可以提高并发性能。

    默认的事务级别是REQUIRED,即如果当前存在一个事务,则加入该事务;如果当前没有事务,则创建一个新的事务。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring事务的级别包括:REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED和NEVER。其中默认的事务级别是REQUIRED。

    1. REQUIRED:表示当前方法必须在一个事务中运行。如果当前方法正在一个事务中运行,那么方法将会在该事务中运行。如果当前方法没有在事务中运行,那么Spring将会开启一个新的事务。
    2. SUPPORTS:表示当前方法支持事务,但是如果存在一个事务,当前方法并不强制必须运行在事务中。
    3. MANDATORY:表示当前方法必须在事务中运行。如果当前方法没有在事务中运行,Spring将会抛出一个异常。
    4. REQUIRES_NEW:表示当前方法必须运行在一个新的事务中。当前方法会暂停当前的事务(如果存在),并且开始一个新的事务。
    5. NOT_SUPPORTED:表示当前方法不应该运行在事务中。如果当前方法在一个事务中运行,该事务将会被暂停,在方法运行完后事务将会恢复。
    6. NEVER:表示当前方法不应该运行在事务中。如果当前方法在一个事务中运行,Spring将会抛出一个异常。

    默认的事务级别是REQUIRED。当没有特殊指明时,Spring事务管理器将会使用默认的事务级别。也就是说,如果当前方法正在一个事务中运行,那么方法将会在该事务中运行。如果当前方法没有在事务中运行,那么Spring将会开启一个新的事务。这个默认级别通常能够满足大部分的事务需求。

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

    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事务的级别是PROPAGATION_REQUIRED。这意味着如果当前存在事务,则在当前事务中执行;如果当前没有事务,则创建一个新事务。这是最常见的事务级别,也是大多数应用程序的默认选择。

    在使用事务时,可以根据实际需求选择不同的事务级别。例如,在需要确保在一个完整的事务内执行的操作中,可以选择PROPAGATION_REQUIRED级别。而在一些无需事务支持的操作中,可以选择PROPAGATION_NOT_SUPPORTED级别。根据业务需求选择合适的事务级别可以提高系统的性能和可靠性。

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

400-800-1024

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

分享本页
返回顶部