2012-03-12 98 views
0

Hibernate缓存并发策略是否也适用于其查询缓存(例如,可缓存查询获取一些标量数据,然后两个查询同时修改该标量数据)?如果不是,查询的并发更新(或读取/更新)会发生什么情况?如果是,如何为查询缓存指定它们?Hibernate查询缓存并发策略

+0

这是一篇很好的文章:http://tech.puredanger.com/2009/07/10/hibernate-query-cache/ – shrini1000 2012-04-06 04:48:56

回答

1

该策略如下。

时间戳高速缓存记录每个表的最后更新时间戳。

每次执行一次可缓存查询并且结果都在查询缓存中时,Hibernate会检查查询结果的时间戳比查询涉及的每个表的更新时间戳更大(更近)。如果更大,那么结果不会过时,并且返回缓存的结果。如果降低,则缓存的结果可能过时,并且对数据库执行查询。

+0

噢!感谢你的回答。这是否意味着查询缓存本身永远不会更新,但只会失效,从而避免任何并发更新问题? – shrini1000 2012-03-14 08:36:11

+0

我不知道缓存如何处理缓存的并发更新。但它是一个从多个线程访问的缓存。我猜想使用了同步和并发集合。你并不需要关心。 – 2012-03-14 08:41:42

+0

好吧,对于二级缓存,非严格读写和读写策略的行为会有所不同,并会影响性能。所以我想知道是否类似的东西也适用于查询缓存,影响其性能。因此,这个问题。 – shrini1000 2012-03-15 02:55:16