2013-10-03 54 views
0

我正在用Hibernate Search创建一个应用程序。我注意到所有的例子都使用了双向关系。我阅读以下内容:Hibernate搜索中的双向关系

当@IndexedEmbedded指向一个实体,协会必须是 定向,而另一侧具有要注释@ContainedIn(如 在前面的例子中所看到的)。如果没有,当关联实体更新时(例如,在我们的 示例中,当关联的 地址实例被更新时,必须更新地方索引文档),Hibernate Search无法 更新根索引。

Hibernate Search chapter 4

这不是一件坏事,如果我认为我的应用程序的JPA部分?所有对象现在应该在何处使用/他们拥有什么东西,这很正常吗?是否有人有这方面的经验?

回答

1

具体给你的问题的意见,如果它是一件坏事,有你的对象“知道他们所使用的地方”:

您还没有引入依赖性业务逻辑层;这确实是可疑的,但事实并非如此。 在这种情况下,您正在使现有链接更加明确:这些实体在数据方面具有关系,并且突出显示此关系实际上更好,因此任何检查实体A的人都会立即意识到与实体B的关系:否则关系会隐藏但仍然存在于物理层上,对于从事映射工作的人来说,最好牢记这一点。

它没有任何性能缺陷,在架构上没有缺点,并且具有实际的好处,它可能对您的业务逻辑有用,避免了维护额外查询的需要。

1

如果我考虑应用程序的JPA部分,这不是一件坏事吗? 所有对象现在应该在何处使用/它们具有什么 是否正常?是否有人有这方面的经验?

不是一件坏事。实际上,您有双向关联是相当普遍的,因为通常您需要根据用例在实体图形中双向导航。还要注意,由于延迟加载,双向关联往往不是性能或内存问题。

这就是说,如果你真的不需要和想要双向关联,你可以自由使用单向关联。但是,在这种情况下,出于Hibernate Search文档中描述的原因,您需要小心使用@IndexedEmbedded