【发布时间】:2016-11-11 05:34:59
【问题描述】:
我正在使用 Spring-Data-Jpa 并使用 @Lock 注释(PESSIMISTIC_WRITE)来获取数据库(Oracle)锁。我需要帮助了解以下情况是否会导致数据库死锁。
- 事务 1(PROPAGATION_REQUIRES_NEW, ISOLATION_DEFAULT) 一个对说教师表进行数据库锁定(说锁定被 id=1 的行接管)。它尝试在子表中插入一条新记录,比如会议。教师表没有更新
- 当事务 1 正在进行时。事务 2(PROPAGATION_REQUIRED, ISOLATION_DEFAULT) 尝试更新教师表(id=1 的行)。它不需要数据库锁。
- 由于锁已被 id 为 1 的行接管。事务 2 必须等待事务 1 结束。
这种情况会导致数据库死锁吗?
【问题讨论】:
-
您使用哪种事务传播?
-
事务 1(PROPAGATION_REQUIRES_NEW, ISOLATION_DEFAULT).事务 2(PROPAGATION_REQUIRED, ISOLATION_DEFAULT)
-
对于 oracle,默认隔离是 READ COMMITTED。
标签: spring oracle spring-data-jpa spring-transactions pessimistic-locking