@Transactional 对读取方法的适用性

@Transactional applicability for read methods

我想为我的服务添加事务支持 class。如果我将 javax.transaction.Transactional 注释添加到 Class 其中包含两种读写方法,它的行为如何?

通过为 class 中的读取方法执行此操作,确实会使执行速度变慢。还是 spring-boot 会忽略读取方法?

对于读取操作,我们使用带有参数@Transactional(readOnly=true)

的org.springframework.transaction.annotation.Transactional

这只是对实际交易子系统的提示; * 它将不一定导致写入访问尝试失败。并且不会减慢执行速度。

  1. 首先你需要弄清楚javax中的@Transactional和Spring是不同的:

  2. 第二件事是@Transactional的范围。当你写在一个方法的顶部时,它的作用域将适用于这个方法,当你写在一个class的顶部时,它的作用域将适用于这个class。 (更多关于这里:https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html#transaction-declarative-annotations)。当你想要只读时,注释有 @Transactional(readOnly=true) 选项。