我目前正在使用 Hibernate 的 JPA 实现成功地将对象持久保存到数据源。现在,我想重写hibernate 的EntityManager 实现,特别是createQuery 函数。因此,在构建持久性上下文时,将使用我自定义的 EntityManager。
这可能吗?如果是这样,我将如何进行?
非常感谢。
编辑:
我想实现我自己的缓存。(注意:我已经查看了 Hibernate 的二级缓存,主要缺点是“缓存永远不会知道另一个应用程序对持久存储所做的更改”,所以我反对它)。
我的缓存将包含数据源中最近使用的数据。由于客户端通过 EntityManager 请求数据,我将覆盖/扩展它,以便首先检查缓存。如果未命中,那么 EntityManager 将照常进行。
编辑2:
或者,我可以从 org.hibernate.ejb 扩展 QueryImpl。这将允许我将 getResultList() 和 getSingleResult() 的功能更改为以下内容:
- 检查外部缓存中的数据
- 如果找到,返回结果
- 否则,调用基类 QueryImpl.getResultList(或 QueryImpl.getSingleResult())