0

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

当@IndexedEmbedded 指向一个实体时,关联必须是定向的,并且另一侧必须注解@ContainedIn(如前面的示例所示)。如果没有,Hibernate Search 将无法在更新关联实体时更新根索引(在我们的示例中,必须在更新关联的 Address 实例时更新 Place 索引文档)。

休眠搜索第 4 章

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

4

2 回答 2

1

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

根本不是一件坏事。事实上,双向关联是很常见的,因为您通常需要根据用例在实体图中双向导航。另请注意,由于延迟加载,双向关联通常不是性能或内存问题。

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

于 2013-10-04T11:19:39.793 回答
1

如果让您的对象“知道它们在哪里使用”是一件坏事,请特别对您的问题发表意见:

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

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

于 2013-10-04T13:23:09.850 回答