gpt4 book ai didi

transactions - 事务性 : controller vs service

转载 作者:行者123 更新时间:2023-12-04 01:57:58 31 4
gpt4 key购买 nike

考虑我有一个 Controller 方法 get()它调用了一些使用数据库的服务方法。

使整个 Controller 方法成为事务性还是每个服务方法是正确的?

在我看来,我们必须做 get()事务性,因为它执行相关操作。

最佳答案

我更喜欢仅将需要事务性的服务方法设为事务性,并控制服务中而不是 Controller 中的事务性。您可以创建一个服务方法,该方法可以包含其他服务方法,并使用 spring 事务在@Transactional 注释中通过传播来管理事务。

@Transactional(propagation =...)

编辑

如果我有两种方法,例如 saveUser() 和 saveEmail()(因为我将电子邮件存储在数据库中以便稍后发送 - 就像队列一样),我将在我的服务中创建一个方法 saveUserAndSendEmail(User user) 这将是事务性的。此方法将在 @Repository 组件中分别调用 saveUser 和 saveEmail() ,因为它们处理数据库。因此,我会将它们放在@Repository 组件中以处理数据库的方法,然后我在@Service 组件中控制事务性。然后 Controller 只需担心提供数据并在需要时进行调用。但是我做了一个事务,因为我不想在整个方法执行成功之前提交数据库中的更改。

但这是我通常使用的风格,我并不是说这一定是要走的路。

关于transactions - 事务性 : controller vs service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4462785/

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