[英]Java Persistence layer in regards to Service/Repository layers
[英]How to separate Repository and Service Layers
应该如何分离存储库和服务? IMHO客户端(例如Controller)应该主要使用服务层而不是存储库,因为它应该与持久性实现分开。 单一存储库应提供仅访问一个实体的方法,而服务方法能够提供更复杂的操作,包括使用多个存储库。
但是如何处理丰富的存储库,它不仅提供了CRUD方法,还提供了更多,比如Spring Data的JPARepository? 在这样的实现中,有很多可能的获取对象的方法,在Service中复制它们并不酷。
那么这个问题的解决方案是什么?
A.像这样在服务层中重复方法
@Service
class XService{
@Autowired
private XRepository repository;
public List<X> findAll(){
return repository.findAll();
}
}
B.只需在控制器中使用存储库(自动装配或服务中的访问方法)
C.还有其他好方法吗?
服务应该实现(业务)逻辑,并可能根据该逻辑修改实体。 如果您的服务层只是存储库的一个薄包装器,即只根据您的描述提示获取实体,那么您的设计就会出现问题。
逻辑通常遍布控制器。 识别该逻辑,将其提取并封装在服务中,并通过编排适当的服务来限制控制器管理应用程序的流程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.