我需要跟踪持久实体的字段,该字段会经常更改,并且实际上并不是该实体的功能,而是某种计算。有时,用户希望查看该计算结果,但这种情况非常罕见(每月一次左右)。
因此,必须以某种方式保存此计算的结果,但我想避免每次更改时都将其保存在数据库中,因为这每次都会触发父实体的更新事件(这会创建不必要的数据库事务,用户通知等)。
解决这个问题的第一个想法是让字段瞬态,但将其保存在hibernate的二级缓存中。在查看文档时,我没有找到这样做的方法,但也许我发现了一个隐藏的可能性。
那么您知道这是否以及如何可能吗?
(我还有其他可能性来解决这个问题,例如使用容器的数据网格,在我的例子中是 JBoss 的 Infinispan - 但这需要为每个应用程序服务器提供不同的解决方案。我只是想确定上述解决方案是否有效,它将独立于容器,可能是一种替代方案)
如果计算是 SQL 函数,则可以使用 @Formula(而不是在应用程序中计算并存储)。
关于二级缓存,不,瞬态字段不被缓存。缓存(以及一般的 ORM)基于持久对象/属性及其元数据。根据定义,瞬态被完全忽略。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)