Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 存储库上的事务_Java_Spring Mvc_Architecture_Domain Driven Design - Fatal编程技术网

Java 存储库上的事务

Java 存储库上的事务,java,spring-mvc,architecture,domain-driven-design,Java,Spring Mvc,Architecture,Domain Driven Design,我的控制器如下所示: @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

我的控制器如下所示:

@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);
}

我听到了服务层事务的咒语,服务层事务;但将存储库直接注入控制器会不会太糟糕呢。在首次使存储库具有事务性之后-需要进行传播,以便在尚未存在时创建事务?

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

例如,BankAccountService需要使用AccountRepository借记/贷记帐户,同时还需要使用账本存储记录交易

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


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

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

例如,BankAccountService需要使用AccountRepository借记/贷记帐户,同时还需要使用账本存储记录交易

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

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