Hibernate除了自带的缓存机制外,还提供了第三方缓存机制实现的接口,如:
1. JCS
2. EHCache
3. OSCache
4. JBoss Cache
5. SwarmCache
新版Hibernate已经将JCS去除,并以EHCache作为默认的二级Cache实现。相对JCS而言,EHCache更加稳定,并具备更好的缓存调度性能,其缺陷是目前还无法做到分布式缓存。
如果我们的系统需要在多台设备上部署,并共享同一个数据库(典型的,如多机负载均衡),则必须使用支持分布式缓存的Cache实现(如JBoss Cache)以避免出现不同系统实例之间缓存不一致,而导致数据同步错误的情况。
其中,SwarmCache提供的是invalidation方式的分布式缓存,即当集群中的某个节点更新了缓存中的数据,即通知集群中的其他节点将此数据废除,之后各个节点需要用到这个数据 的时候,会重新从数据库中读入并填充到缓存中。
而JBossCache提供的是Repplication式的缓存,即如果集群中某个节点的数据发生改变,此节点会将发生改变的数据的最新版本复制到集群中的每个节点中以保持所有节点状态一绪。