Session is a transaction-level cache of persistent data. It is possible to configure a cluster or JVM-level (
SessionFactory-level) cache on a class-by-class and collection-by-collection basis. You can even plug in a clustered cache. Be aware that caches are not aware of changes made to the persistent store by another application. They can, however, be configured to regularly expire cached data.
You have the option to tell Hibernate which caching implementation to use by specifying the name of a class that implements
org.hibernate.cache.CacheProvider using the property
hibernate.cache.provider_class. Hibernate is bundled with a number of built-in integrations with the open-source cache providers that are listed below. You can also implement your own and plug it in as outlined above.
Table 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 Cache 1.x || org.hibernate.cache.TreeCacheProvider || clustered (ip multicast), transactional || yes (replication) || yes (clock sync req.) |
| JBoss Cache 2 || org.hibernate.cache.jbc2.JBossCacheRegionFactory || clustered (ip multicast), transactional || yes (replication or invalidation) || yes (clock sync req.) |
<cache> element of a class or collection mapping has the following form:
usage (required) specifies the caching strategy:
region (optional: defaults to the class or collection role name): specifies the name of the second level cache region
include (optional: defaults to
non-lazy: specifies that properties of the entity mapped with
lazy="true" cannot be cached when attribute-level lazy fetching is enabled
Alternatively, you can specify
<collection-cache> elements in
usage attribute specifies a cache concurrency strategy.