2013-10-03 52 views
0

我正在用Hibernate Search創建一個應用程序。我注意到所有的例子都使用了雙向關係。我閱讀以下內容:Hibernate搜索中的雙向關係

當@IndexedEmbedded指向一個實體,協會必須是 定向,而另一側具有要註釋@ContainedIn(如 在前面的例子中所看到的)。如果沒有,當關聯實體更新時(例如,在我們的 示例中,當關聯的 地址實例被更新時,必須更新地方索引文檔),Hibernate Search無法 更新根索引。

Hibernate Search chapter 4

這不是一件壞事,如果我認爲我的應用程序的JPA部分?所有對象現在應該在何處使用/他們擁有什麼東西,這很正常嗎?是否有人有這方面的經驗?

回答

1

具體給你的問題的意見,如果它是一件壞事,有你的對象「知道他們所使用的地方」:

您還沒有引入依賴性業務邏輯層;這確實是可疑的,但事實並非如此。 在這種情況下,您正在使現有鏈接更加明確:這些實體在數據方面具有關係,並且突出顯示此關係實際上更好,因此任何檢查實體A的人都會立即意識到與實體B的關係:否則關係會隱藏但仍然存在於物理層上,對於從事映射工作的人來說,最好牢記這一點。

它沒有任何性能缺陷,在架構上沒有缺點,並且具有實際的好處,它可能對您的業務邏輯有用,避免了維護額外查詢的需要。

1

如果我考慮應用程序的JPA部分,這不是一件壞事嗎? 所有對象現在應該在何處使用/它們具有什麼 是否正常?是否有人有這方面的經驗?

不是一件壞事。實際上,您有雙向關聯是相當普遍的,因爲通常您需要根據用例在實體圖形中雙向導航。還要注意,由於延遲加載,雙向關聯往往不是性能或內存問題。

這就是說,如果你真的不需要和想要雙向關聯,你可以自由使用單向關聯。但是,在這種情況下,出於Hibernate Search文檔中描述的原因,您需要小心使用@IndexedEmbedded