2014-01-26 137 views
1

搜索了很長一段時間,但找不到答案......所以我在這裏問: JPA 2.0(我使用OpenJPA和oracle數據庫)確實需要DB中的任何外鍵約束?JPA是否需要外鍵

我用各種映射(@OneToOne,@ManyToMany有和沒有額外的連接表,@ManyToOne,@OneToMany)進行了很長時間的實驗,並且它在沒有它們的情況下一直工作到現在。但是我已經在網上讀了一些內容,說他們是強制性的。那麼什麼是正確的?

在此先感謝

回答

2

不,數據庫中的外鍵不是嚴格要求的。無論是使用JPA還是使用(AFAIK)任何其他技術訪問數據庫時。

有外鍵可以防止不一致的數據寫入數據庫。如果創建或更新數據庫中的數據的軟件已經很健全,那麼外鍵永遠不會被違反,並且如果它們在那裏或者沒有,你將不會注意到。

爲什麼你認爲與JPA結合使用外鍵是強制性的?

+0

他們出現在很多教程和許多映射疑難解答的答案。如果JPA在沒有他們的情況下幹得不錯,後者讓我感到不安全...... – swarley

2

我想在Java JPA層不需要它們都以生成代理,但在討論這其實就是潛在的大約生產系統配置的口水戰。

如果有人認爲他們是強制性的(我是其中之一),它可能不是與JPA有關的意見,而是數據庫設計原則。外鍵可以強化數據一致性,這可能意味着全球運營計費系統或您正在實施的任何邏輯。另一方面,那些不願意爲此提交性能參數......這是一個觀點問題