缓存同步策略可应用于实体类和集合属性。
缓存同步策略决定了数据缓存中的存取规则。
为了使得缓存调度遵循正确的应用级事务隔离机制,我们必须为每个实体类指定相应的缓存同步策略。
Hibernate 提供了以下4种内置的缓存同步策略:
1. read-only
只读。对于不会发生改变的数据,可使用只读型缓存。
2. nonstrict-read-write
如果程序对并发访问下的数据同步要求不是非常严格,且数据更新操作频率较低(几个小时或者更长时间更新一次),可以采用本选项,获得较好的性能。
3. read-write
严格可读写缓存。基于时间戳判定机制,实现了“read committed”事务隔离等级。可用于对数据同步要求严格的情况,但不支持分布式缓存。这也是实际应用中使用最多的同步策略。
4. transactional
事务型缓存,必须运行在JTA事务环境中。
在事务型缓存中,缓存的相关操作也被添加到事务之中(此时的缓存,类似一个内存数据库),如果由于某种原因导致事务失败,我们可以连同缓冲池中的数据一周回滚到事务开始之前的状态。
事务型缓存实现在“Repeatable read” 事务隔离等级,有效保障了数据的合法性,适用于对关键数据的缓存。
注意:目前Hibernate内置的Cache中,只有JBossCache支持事务性的Cache实现。