gpt4 book ai didi

java - 存储库上的事务

转载 作者:行者123 更新时间:2023-11-29 03:39:46 24 4
gpt4 key购买 nike

我的 Controller 看起来像这样:

@RequestMapping(value = "/User", method = RequestMethod.GET)
public @ResponseBody String getUser(@RequestParam long id) {
User user = userService.get(id);
return user.name;
}

服务是这样的

@Transactional(readOnly = true)
public User getUser(long id) {
return userRepository.get(id);
}

我听到了服务层的交易服务层的交易;但是将存储库直接注入(inject) Controller 会不会很糟糕。在首先使存储库成为事务性之后 - 需要传播,因此如果事务不存在,它将创建一个事务?

最佳答案

这取决于项目的大小和其中的复杂性。当多个存储库需要交互时,我觉得服务工作得很好。

例如,BankAccountService 需要使用 AccountRepository 来借记/贷记帐户,同时它还需要使用 LedgerRepository 来记录交易。

如果你只是简单地执行 crud 操作,我会毫不犹豫地将存储库放在 Controller 中。如果您的操作更高级,我会采用服务方法。解决最简单的用例,然后在引入更多复杂性时进行重构。预先进行大型设计通常会违反“您不需要它”的原则。

当不同的 Controller 需要执行相同的操作时,服务也很方便。因此,如果您创建的逻辑是特定于 Controller 的,并且您不需要重用代码,那么将存储库放在 Controller 中是有意义的。如果您需要在其他 Controller 中复制逻辑,服务可能是更好的选择,因为它可以重用。

关于java - 存储库上的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13719860/

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