從我的理解@OneToOne
和@ManyToOne
JPA註釋做eager
fetch。我希望這些在我的應用程序中被延遲加載,或者至少暗示它(這是hibernate默認的)。我已經開始添加註釋fetch = FetchType.LAZY
JPA默認獲取類型
例如
@ManyToOne(optional = false, fetch = FetchType.LAZY)
代替
@ManyToOne(optional = false)
這是既麻煩又容易出錯。有沒有辦法在應用程序級別執行此操作?也許在persistence.xml中?
您使用一對一來證明這一點,但多對一是*遠遠*更常見的關聯類型。是的,在一對一關聯的情況下,提前獲取可能更好。懶惰作爲默認更好的原因更多的是這樣一個事實,即有很多定義明確的方法可以使運行時(在Hibernate和JPA中)都非常渴望,但幾乎沒有辦法明確地使它們懶。 – 2012-10-02 14:39:31
在這種情況下,一對一和多對一是如何不同的,一個人如何證明另一個人沒有證明是正當的?我強烈認爲Erhan在這方面有一點意義。如果您有產品,但客戶希望將其與不同的JPA實施一起使用。然後,他們最終會出現不一致,或者他們將不得不修改原始代碼以使其與其他實現兼容。 然而,你完全正確地說在運行時不可能將關係變成懶惰。 – 2012-10-09 06:39:25
因爲經驗表明一對一關係比多對一關係要頻繁得多,正如我已經指出的那樣。你是理想主義的;我很務實。我更喜歡現實世界的解決方案 – 2012-10-09 13:25:21