【问题标题】:Listener for get method in HibernateHibernate中get方法的监听器
【发布时间】:2012-09-07 06:43:44
【问题描述】:

我致力于将我的 orm 与弹性搜索集成。每次调用我的创建、更新、删除方法时,我都会在弹性搜索中执行相同的操作来更新我的索引。我通过 Hibernate 侦听器 PostInsert、PostDelete、PostUpdate 执行此操作。现在我想知道的是,当我首先调用我的 orm 的 get 或 find 方法时,我在弹性搜索中搜索数据,如果在弹性搜索中找不到数据,我必须从我的数据库中获取它。为了实现这一点,我需要一些预听者。是否有任何类型的侦听器可以执行此操作,或者是否有任何其他替代方法可以执行此操作。提前谢谢。

【问题讨论】:

    标签: java hibernate orm listener elasticsearch


    【解决方案1】:

    我们正在 Hibernate 团队中实现 Hibernate ORM 和 Elasticsearch 之间的完全集成。

    查看 Hibernate Search 及其全新的 Elasticsearch 集成:

    【讨论】:

      【解决方案2】:

      我认为您可以使用Hibernate event system,并实现预加载或加载后触发器。在您的实现中,您可以访问通过事件对象加载的实体。

      问题是这些触发器直接附加到会话,我认为没有办法将它们的范围限制为某些实体或查询,所以在你的类中你将“看到”所有加载的实体,你必须选择哪些需要重载搜索方法。

      这里有一个example,可能会对您有所帮助。

      祝你好运!

      【讨论】:

      • 事件不是这里的解决方案,因为我理解这个问题。例如,每次在 select 语句之前都会调用事件预选择,据我所知,@Muzy 不想在弹性过滤器中有结果时进行选择。
      【解决方案3】:

      只需简单地做一些中间层 - 包装您的 get/find 方法,您首先检查结果是否可通过弹性搜索获得。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 2017-01-22
        • 1970-01-01
        相关资源
        最近更新 更多