【发布时间】:2022-01-04 06:03:03
【问题描述】:
春季启动,jdbc。
说到嵌套事务,我觉得有点滑..
假设有使用 MyRepository 的 MyService。
@Named
@Transactional(isolation=Isolation.READ_COMMITTED) // READ_COMMITTED < SERIALIZABLE
class MyService {
void do() {
myRepository.add(entity);
...
}
}
@Repository
class MyRepository {
@Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.SERIALIZABLE)
void add(entity) {...}
}
说,在这种情况下,我想确保 MyRepository 关心 add() 方法,确保它在它处理的表上设置最大级别锁定 Isolation.SERIALIZABLE。
我不希望任何人覆盖它,因为它会导致并发问题。
(同样适用于传播级别)
问题:
在嵌套事务的情况下,myService.do() 的事务会覆盖myRepository.add 的隔离级别并使其不那么严格吗?
处理嵌套事务有哪些注意事项?
【问题讨论】:
-
请关注Nested transaction issues,我想它会回答你的问题
标签: java spring-boot jdbc