有没有办法通过Hibernate观察Database表中的变化?

Sha*_*shi 3 java database orm hibernate

在我的应用程序中,我在一个单独的类中存储一个包含50个记录的小表,因为该表中的数据几乎没有变化 - 例如国家列表.

虽然这个概念并不好,但我现在必须继续这样做.在Hibernate中是否有任何解决方案可以观察表中的变化和更改,调用类的方法来更新变量.

Pas*_*ent 7

Hibernate不会收到有关表级更改的通知.(坏)解决方案是通过Hibernate的API更新数据,并使用拦截器提供的回调之一与Singleton做一些黑魔法伏都教.但老实说,处理这个问题的(正确)方法是摆脱单例并将数据放入二级缓存(如果手动更新表,则使缓存无效).

(编辑:正如ChssPly76在评论中提到的,如果删除单例不是一个选项,其中包括修改单例以查找和返回缓存的hibernate管理实体,例如您的国家/地区),则存在中间解决方案.)

  • 第二级缓存为+1.如果它与代码捆绑在一起,OP甚至不必摆脱单例; 它应该是微不足道的重构它来从缓存中获取东西. (2认同)