【发布时间】:2019-02-24 17:29:13
【问题描述】:
在我的 spring 服务中,我调用了两个 spring 数据存储库方法
@Service
public class ClientService {
public void updateClientByIdAndKey(final Integer id, final String key) {
final Client client = clientRepository.findByIdAndKey(id, key);
// .. Update client details
client.save(client);
}
}
现在我的查询与事务管理有关。据我了解并看过代码,spring 存储库使用 @Transactional 为其方法启用了事务。对于选择操作,它具有 readonly=true。
我对事务的理解是,当执行选择操作时,会创建一个事务,然后为保存操作创建另一个事务,因为对于选择操作,事务是 readOnly=true。
我希望在单个事务中执行读取和写入操作。如果我上面的理解是正确的,那么在服务方法 updateClientByIdAndKey 上使用 @Transactional 将在一个事务中运行,这是我的意图,还是会在一个事务中执行两个操作? p>
如果我在这里遗漏了什么,请告诉我。
【问题讨论】:
-
如文档中所述:默认情况下,存储库实例上的 CRUD 方法是事务性的。。来源:docs.spring.io/spring-data/jpa/docs/2.0.10.RELEASE/reference/…
标签: java spring transactions spring-data-jpa spring-transactions