【发布时间】:2011-02-23 13:06:20
【问题描述】:
考虑以下场景。
在 db 中有一个表,它的内容一起形成一个存储库。此表将很少更新(更新现有扩展、添加新实体或删除实体)。 所以目前我使用的方法是创建一个单例 XXXRepository pojo,它将读取 XXX 表中的所有行(实体)并将它们存储在地图中。
如果有人正在更新 XXX 表,那么在执行代码的更新部分后,将运行一个 post runnable,它将清除存储库(映射),因此下次从映射中定位任何实体时,loadRepository 将是调用(因为地图将为空)。
这是我目前处理存储库缓存的方式,我可以在整个应用程序生命周期中使用它。
在 JPA/Hibernate 中是否提供/支持任何标准方式来实现/实现此要求。
我通过了缓存机制(一级和二级缓存)。但它似乎适用于实体、查询或数据,并且用于与存储库预期发生或实现的目的/方法不同的目的/方法。 此外,如果我们能够通过使用二级缓存以某种方式实现这一点,那么还有一个问题是缓存更新仅在 jpa 操作和 jpql 查询的情况下。在 jdbc 或本机查询的情况下,它将无法更新,并且我们将拥有陈旧的数据(如果我错了,请纠正我)。
请在这方面帮助我,在 jpa 中为此遵循的标准方法是什么。
【问题讨论】: