比方說,我有嵌套的對象是這樣的:Spring Data JPA:嵌套對象設計 - 單向?雙向?
Customer
Project
Rent
Fault
(and maybe deeper)
客戶包含了用戶的權利,我必須驗證。 再有就是更新故障的方法:
void updateFault(long faultId, String content, User user) { .. }
問題:如何從故障到客戶?
- 選項:使用反向引用父:故障租,租到項目,項目以客戶
- 選項:使用反向引用從故障到客戶(以及從租到客戶等)
選項:沒有反向引用,並通過很多數據庫查詢走起來,如
rent = rentRepository.findByFault(fault);
project = projectRepository.findByRent(rent);
customer = customerRepository.findByProject(project);
我讀到我應該避免雙向引用。但是如果我有20個關卡和大量數據呢?然後選項#3根本不適合。
我在Spring MVC項目中使用Spring Data JPA。
選項1非常好。詳細瞭解雙向關係的好處。 http://in.relation.to/2016/09/28/performance-tuning-and-best-practices/ –
你從更核心的通用概念映射到更具體的概念是什麼原因?通常你會完全相反。故障與租金,項目租賃,項目給客戶有關。通過這種方式,您可以使用更具體的存儲庫查詢來查找更多通用概念的項目(即使用FaultRepository.findByCustomer(...)使用手動聲明查詢)。 –
@OliverGierke謝謝。我從來沒有聽說過我應該這樣做。這只是從OOP的角度來看(客戶有一個項目列表..)。你有沒有更深入的信息(教程)? 明天我會試試看。 – NoobieNoob