【发布时间】:2018-12-27 09:18:47
【问题描述】:
我正在使用 Spring 来处理我的事务。实际上,我看到了一个示例,其中我们有一个使用默认事务方面 @RequiredNew 和 readOnly=true 在表上查找的方法。
@Override
@Transactional(readOnly = true)
public E findAll(E entity) {
return repository.save(entity);
}
我的问题是为什么不这样做,有什么区别?
@Transactional(propagation = Propagation.NEVER)
@Override
public Iterable<E> findAll() {
return repository.findAll();
}
【问题讨论】:
-
javadoc 是怎么说的?你读过吗?没有任何代码 sn-ps 有意义。
-
对于事务从不它说执行非事务性。对于只读它说一个布尔标志,如果事务是*有效只读的,可以设置为 {@code true}。我在问什么是关于性能问题。
-
性能无关紧要。代码 sn-ps 没有任何意义。从编写正确的代码开始。然后当你有一些正常工作时,看看你是否有性能问题。然后,如果你有一个,测量以确保它来自哪里。然后想知道如何使特定部分更快。
-
我的问题是假设我有一个对数据库的 findAll 请求,例如,最好使用 readOnly=true 或使该方法成为非事务性方法?就这么简单。
-
您需要一个事务才能使用 JPA。故事结局。如果您的 findAll 方法确实是只读的(即它实际上会找到实体并且不会像在您的代码中那样保存任何内容),那么您可以使用 readOnly。
标签: java spring spring-boot transactions