2

我需要跟踪持久实体的字段,该字段会经常更改,并不是该实体的真正特征,而是某种计算。有时,用户想要查看该计算,但这种情况非常罕见(大约一个月一次)。所以这个计算的结果必须以某种方式保存,但我想避免每次更改时都将其保存在数据库中,因为这会每次触发父实体的更新事件(这会创建不必要的数据库事务,用户通知等)。

解决此问题的第一个想法是使字段瞬态,但将其保存在 hibernate 的二级缓存中。在查看文档时我没有找到这样做的方法,但也许我监督了一个隐藏的可能性。那么您知道这是否以及如何实现?

(我还有其他可能解决这个问题,例如使用容器的数据网格,在我的例子中是 JBoss 的 Infinispan - 但这需要为每个应用程序服务器提供不同的解决方案。我只是想确定上述解决方案是否,这将独立于容器,可能是一种替代方案)

4

1 回答 1

2

如果计算是 SQL 函数,您可以使用 @Formula(而不是在应用程序中计算和存储)。

关于二级缓存,不,不缓存瞬态字段。缓存(以及一般的 ORM)基于持久对象/属性及其元数据。根据定义,瞬态被完全忽略。

于 2013-10-30T08:47:33.767 回答