监听Hibernate中的get方法

时间:2012-09-07 06:43:44

标签: java hibernate orm listener elasticsearch

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

3 个答案:

答案 0 :(得分:1)

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

请参阅Hibernate Search及其全新的Elasticsearch集成:

答案 1 :(得分:0)

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

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

这里有example可能对您有帮助。

祝你好运!!

答案 2 :(得分:0)

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