waj*_*ajs 3 java service repository layer
Repository和Service应该如何分离?恕我直言,客户端(例如控制器)应该主要使用服务层而不是存储库,因为它应该与持久性实现分开。Single Repository 应该只提供一个实体的访问方法,而 Service 的方法能够提供更复杂的操作,包括使用多个存储库。
但是如何处理丰富的存储库,它不仅提供 CRUD 方法,而且提供更多,例如 Spring Data 中的 JPARepository?在这样的实现中,有很多可能的获取对象的方法,在 Service 中复制它们并不酷。
那么这个问题的解决方案是什么?
A. 像这样在服务层重复方法
@Service
class XService{
@Autowired
private XRepository repository;
public List<X> findAll(){
return repository.findAll();
}
}
Run Code Online (Sandbox Code Playgroud)
B. 简单地在控制器中使用存储库(自动装配或服务中的访问方法)
C. 还有其他好的方法吗?
服务应该实现(业务)逻辑并可能根据该逻辑修改实体。如果您的服务层只是存储库周围的薄包装,即仅按照您的描述获取实体,那么您的设计就有问题。
逻辑通常分布在整个控制器中。识别该逻辑,将其提取并封装在服务中,并通过编排适当的服务来限制控制器管理应用程序的流程。
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |