gpt4 book ai didi

java - 划分服务或 JPARepositories 中的事务

转载 作者:行者123 更新时间:2023-11-30 06:08:41 26 4
gpt4 key购买 nike

根据this jpa 存储库实例是事务性的,但在其他引用书目中表示事务应该在服务层中声明。更好的方法是什么?

最佳答案

虽然单个 JPA 存储库方法是以事务方式执行的,但通常需要执行包括各种 JPA 存储库方法调用的事务。

考虑将金额从一个帐户转移到另一个帐户的经典方法。传输过程中任何一个阶段出现错误都需要回滚。因此整个(服务)方法是 @Transactional :

@Transactional
public void transfer(Account a, Account b, int amount) {
a.reduce(amount);
b.add(amount),
accountRepository.save(a);
accountRepository.save(b);
}

在这里,即使保存帐户 b 时出现错误也不会改变帐户 a 的持久状态,因为 transfer 中的所有内容都已保存。方法已回滚。

要在 Spring 中启用事务管理,请使用 @EnableTransactionManagement在 Java 上 @Configuration类或<tx:annotation-driven/>如果是 XML 配置。

关于java - 划分服务或 JPARepositories 中的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50726820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com