hibernateのL1キャッシュを無効にする

  備忘録
【注意】
この記事は過去に別サイトで執筆したものを再掲載したものです。
内容が古くなっていて現在では適用できない場合や、もっと良い方法が出来ている場合があります。
 

https://stackoverflow.com/questions/3827704/how-to-disable-hibernate-caching

このやりとりを見ると、、、

  • hibernateにはL1キャッシュとL2キャッシュがある。
  • L2キャッシュはデフォルトでOFFになっている。
  • L1キャッシュはOFFにはできない。

つまり、L1キャッシュは無効にできないということらしい。

無効にはできないが任意のオブジェクトをキャッシュから追い出すこと(セッションのevictメソッド)はできるので、リードの前に実施することでキャッシュからリードしてしまう事象は回避できそう。

    seesion.evict(yourObject);

ちなみに、L2キャッシュやクエリキャッシュについては以下のオプションが指定できる。

hibernate.cache.use.query_cache = true or false
hibernate.cache.use_second_level_cache = true or false

クエリキャッシュは単体では有効にできない。L2キャッシュを有効にした上で使用する。

LEAVE A COMMENT