Hibernate の Session は永続データのトランザクションレベルのキャッシュです。 class-by-class と collection-by-collection ごとの、クラスタレベルや JVM レベル ( SessionFactory レベル)のキャッシュを設定することが出来ます。クラスタ化されたキャッシュにつなぐことさえ出来ます。しかし注意してください。キャッシュは他のアプリケーションによる永続層の変更を考慮しません(キャッシュデータを定期的に期限切れにする設定は出来ます)。
Hibernate が使用するキャッシュ実装は、 hibernate.cache.provider_class プロパティに org.hibernate.cache.CacheProvider を実装したクラス名を指定することで変更できます。 Hibernate は多くのオープンソースのキャッシュプロバイダをビルトイン実装で持っています(後にリストがあります)。加えて、前に説明したように、あなた自身が独自の実装をして、それを組み込むことも出来ます。バージョン3.2より前では EhCache がデフォルトのキャッシュプロバイダであることに注意してください。バージョン3.2ではこれは当てはまりません。
| キャッシュ | プロバイダクラス | タイプ | クラスタセーフ | クエリキャッシュのサポート |
|---|---|---|---|---|
| Hashtable(製品用として意図していません) |
org.hibernate.cache.HashtableCacheProvider
|
メモリ | yes | |
| EHCache |
org.hibernate.cache.EhCacheProvider
|
メモリ、ディスク | yes | |
| OSCache |
org.hibernate.cache.OSCacheProvider
|
メモリ、ディスク | yes | |
| SwarmCache |
org.hibernate.cache.SwarmCacheProvider
|
クラスタ(ip マルチキャスト) | yes(クラスタ無効化) | |
| JBoss TreeCache |
org.hibernate.cache.TreeCacheProvider
|
クラスタ(ip マルチキャスト)、トランザクショナル | yes(複製) | yes(時刻同期が必要) |
表 19.1. キャッシュプロバイダ