[英]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.