【问题标题】:Transcations level scope in spring春季交易级别范围
【发布时间】:2018-02-09 10:28:13
【问题描述】:

我正在使用 Spring Boot 1.4 并试图了解 Spring 事务管理是如何工作的。

这是我的问题:

假设我有一个服务,它的方法A@Transactional(isolation = SERIALIZABLE) 注释,另一个方法B@Transactional(isolation = READ_COMMITED) 注释。

然后让我们假设某个服务X 依次调用这两个方法AB。 我的同事说事务级别是在Spring 中为每个连接设置的。这意味着如果池中的相同连接用于这两个顺序调用,那么两个事务的隔离级别AB = SERIALIZABLE。

然而,对我来说,这似乎有点奇怪。我希望这两个事务将具有不同级别的隔离,因为所有 sql 数据库都允许为给定事务显式设置隔离级别。

我试图阅读文档,但找不到一个地方可以提到将事务级别分配给连接。

有人可以在这个问题上评判我们吗?

【问题讨论】:

    标签: java spring spring-boot spring-data spring-data-jpa


    【解决方案1】:

    如果在调用方法 A() 或 B() 时没有启动事务,则在调用该方法时创建一个新事务,并在离开该方法时关闭该事务。已使用的连接返回池或被关闭。
    该线程解释了事务关闭时连接会发生什么:
    Does Spring close connection after committing transaction?

    如果存在包装这两种方法的事务,则两种方法只使用一个连接;我猜隔离级别是由更大的事务定义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 2019-02-14
      • 2014-05-28
      相关资源
      最近更新 更多