2013-05-22 36 views

回答

3

沒有絕對的最佳實踐。當你想要或需要雙向關聯時使用雙向關聯,而當你想單向關聯時使用雙向關聯。

一些關聯不應該是雙向的。例如,如果一個地址可以是一個用戶,一個消費者,一個供應商或一個聯繫人或者其他任何地址,那麼在這個地址中引用這些實體中的每個實體(除了一個之外都是空的)不是一個明智的選擇。除此之外,當兩個實體緊密耦合時,我通常使關聯成爲雙向的,以便於查詢的開發和編寫(如Hibernate文檔所述)。

我也同意你鏈接到的SO答案:當你有一個到很多或很多到很多的關聯時要小心。但是,如果不是所有者方,這種關聯也可以保持對實體完全私有(因此永遠不會被加載),只是爲了幫助編寫查詢,但禁止初始化非常大的集合。

爲了使JPA沒有問題,您只需要瞭解並思考封面下發生的事情。開發時,打開SQL日誌記錄並查看正在執行的查詢。

+0

「也可以保持對實體完全私有(因此永遠不會被加載),只是爲了幫助編寫查詢,但禁止初始化非常大的集合」您的意思是使用私有getter? (offtopic:總是很高興地看到你的答案JB) – Gab

+0

是的,或者根本沒有吸氣(而且沒有設置)如果註釋是在字段上。謝謝你的客氣話。 –

+0

Thanks.I錯過了一個問題,爲什麼eclipse/net beans工具會生成雙向關聯?即使他們沒有機會實現其他列表,設置集合。 – tech2504