gpt4 book ai didi

java - 如何分离存储库和服务层

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:25 26 4
gpt4 key购买 nike

Repository 和Service 应该如何分离?恕我直言,客户端(例如 Controller )应该主要使用服务层而不是存储库,因为它应该与持久性实现分开。单一存储库应该只提供一个实体的访问方法,而服务方法能够提供更复杂的操作,包括使用多个存储库。

但是如何处理丰富的存储库,它不仅提供 CRUD 方法,还提供更多,例如 Spring Data 的 JPARepository?在此类实现中,有太多可能的获取对象的方法,因此在服务中复制它们并不酷。

那么这个问题的解决方案是什么?

一个。像这样在服务层中复制方法

@Service
class XService{

@Autowired
private XRepository repository;

public List<X> findAll(){
return repository.findAll();
}
}

B.只需在 Controller 中使用存储库(服务中的 Autowiring 或访问方法)

C.还有其他好的方法吗?

最佳答案

服务应实现(业务)逻辑并可能根据该逻辑修改实体。如果您的服务层只是存储库的薄包装,即仅按照您的描述获取实体,那么您的设计有问题。

逻辑通常分布在整个 Controller 中。识别该逻辑,将其提取并封装在服务中,并通过编排适当的服务来限制 Controller 来管理应用程序的流程。

关于java - 如何分离存储库和服务层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17672065/

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