【问题标题】:Bidirectional relationship in Hibernate searchHibernate 搜索中的双向关系
【发布时间】:2013-10-03 16:35:49
【问题描述】:

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

当@IndexedEmbedded 指向一个实体时,关联必须是 定向的,另一侧必须注释@ContainedIn(如 见前面的例子)。如果没有,Hibernate Search 没有办法 当关联实体更新时更新根索引(在我们的 例如,一个地方索引文档必须在关联时更新 地址实例已更新)。

Hibernate Search chapter 4

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

【问题讨论】:

    标签: java hibernate jpa hibernate-search


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2018-01-13
        • 2013-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多