@Transactional 对读取方法的适用性
@Transactional applicability for read methods
我想为我的服务添加事务支持 class。如果我将 javax.transaction.Transactional 注释添加到 Class 其中包含两种读写方法,它的行为如何?
通过为 class 中的读取方法执行此操作,确实会使执行速度变慢。还是 spring-boot 会忽略读取方法?
对于读取操作,我们使用带有参数@Transactional(readOnly=true)
的org.springframework.transaction.annotation.Transactional
这只是对实际交易子系统的提示;
* 它将不一定导致写入访问尝试失败。并且不会减慢执行速度。
首先你需要弄清楚javax中的@Transactional
和Spring是不同的:
第二件事是@Transactional
的范围。当你写在一个方法的顶部时,它的作用域将适用于这个方法,当你写在一个class的顶部时,它的作用域将适用于这个class。 (更多关于这里:https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html#transaction-declarative-annotations)。当你想要只读时,注释有 @Transactional(readOnly=true) 选项。
我想为我的服务添加事务支持 class。如果我将 javax.transaction.Transactional 注释添加到 Class 其中包含两种读写方法,它的行为如何?
通过为 class 中的读取方法执行此操作,确实会使执行速度变慢。还是 spring-boot 会忽略读取方法?
对于读取操作,我们使用带有参数@Transactional(readOnly=true)
这只是对实际交易子系统的提示; * 它将不一定导致写入访问尝试失败。并且不会减慢执行速度。
首先你需要弄清楚javax中的
@Transactional
和Spring是不同的:第二件事是
@Transactional
的范围。当你写在一个方法的顶部时,它的作用域将适用于这个方法,当你写在一个class的顶部时,它的作用域将适用于这个class。 (更多关于这里:https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html#transaction-declarative-annotations)。当你想要只读时,注释有 @Transactional(readOnly=true) 选项。