搜索了很長一段時間,但找不到答案......所以我在這裏問: JPA 2.0(我使用OpenJPA和oracle數據庫)確實需要DB中的任何外鍵約束?JPA是否需要外鍵
我用各種映射(@OneToOne,@ManyToMany有和沒有額外的連接表,@ManyToOne,@OneToMany)進行了很長時間的實驗,並且它在沒有它們的情況下一直工作到現在。但是我已經在網上讀了一些內容,說他們是強制性的。那麼什麼是正確的?
在此先感謝
搜索了很長一段時間,但找不到答案......所以我在這裏問: JPA 2.0(我使用OpenJPA和oracle數據庫)確實需要DB中的任何外鍵約束?JPA是否需要外鍵
我用各種映射(@OneToOne,@ManyToMany有和沒有額外的連接表,@ManyToOne,@OneToMany)進行了很長時間的實驗,並且它在沒有它們的情況下一直工作到現在。但是我已經在網上讀了一些內容,說他們是強制性的。那麼什麼是正確的?
在此先感謝
不,數據庫中的外鍵不是嚴格要求的。無論是使用JPA還是使用(AFAIK)任何其他技術訪問數據庫時。
有外鍵可以防止不一致的數據寫入數據庫。如果創建或更新數據庫中的數據的軟件已經很健全,那麼外鍵永遠不會被違反,並且如果它們在那裏或者沒有,你將不會注意到。
爲什麼你認爲與JPA結合使用外鍵是強制性的?
我想在Java JPA層不需要它們都以生成代理,但在討論這其實就是潛在的大約生產系統配置的口水戰。
如果有人認爲他們是強制性的(我是其中之一),它可能不是與JPA有關的意見,而是數據庫設計原則。外鍵可以強化數據一致性,這可能意味着全球運營計費系統或您正在實施的任何邏輯。另一方面,那些不願意爲此提交性能參數......這是一個觀點問題
他們出現在很多教程和許多映射疑難解答的答案。如果JPA在沒有他們的情況下幹得不錯,後者讓我感到不安全...... – swarley