💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 19.2\. 二级缓存(The Second Level Cache) Hibernate的`Session`在事务级别进行持久化数据的缓存操作。 当然,也有可能分别为每个类(或集合),配置集群、或JVM级别(`SessionFactory级别`)的缓存。 你甚至可以为之插入一个集群的缓存。注意,缓存永远不知道其他应用程序对持久化仓库(数据库)可能进行的修改 (即使可以将缓存数据设定为定期失效)。 通过在`hibernate.cache.provider_class`属性中指定`org.hibernate.cache.CacheProvider`的某个实现的类名,你可以选择让Hibernate使用哪个缓存实现。Hibernate打包一些开源缓存实现,提供对它们的内置支持(见下表)。除此之外,你也可以实现你自己的实现,将它们插入到系统中。注意,在3.2版本之前,默认使用EhCache 作为缓存实现,但从3.2起就不再这样了。 **表 19.1\. 缓存策略提供商(Cache Providers)** | Cache | Provider class | Type | Cluster Safe | Query Cache Supported | | --- | --- | --- | --- | --- | | Hashtable (not intended for production use) | `org.hibernate.cache.HashtableCacheProvider` | memory | yes | | EHCache | `org.hibernate.cache.EhCacheProvider` | memory, disk | yes | | OSCache | `org.hibernate.cache.OSCacheProvider` | memory, disk | yes | | SwarmCache | `org.hibernate.cache.SwarmCacheProvider` | clustered (ip multicast) | yes (clustered invalidation) | | JBoss TreeCache | `org.hibernate.cache.TreeCacheProvider` | clustered (ip multicast), transactional | yes (replication) | yes (clock sync req.) |