Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

EclipseLinkでレベル2キャッシュの削除

今日は細かいテストをしていて「あれ?」という挙動があり、詳しく追っていった所、EclipseLinkのキャッシュ関連でした。そしてずっとハマっていました(-_-;

本当はスモールな再現コードを作ってのせようと思ったのですが、時間が足りず作れていないので、とりあえずメモだけ。

金魚本にもありますが、JPAには

  • レベル1キャッシュ
  • レベル2キャッシュ

とあるとのことです。

恥ずかしながら、この辺りをあまり細かく意識できていなかったのですが…今日ハマった挙動がイマイチ理解できなかったため、EclipseLinkのCache解説のページをみながら「ちゃんと理解せんと…」と少しゲンナリしてます(-_-;
http://wiki.eclipse.org/EclipseLink/Examples/JPA/Caching

今日ハマった現象は、上記の中でevictAll()を呼んだり、ヒントクエリ(という呼称でいいのかな…?)を付与してみたら解消したので、不具合時の内部イメージと、なぜこれらを呼んで解決するのか、を理解していきたいと思います。

Cache cache = getEntityManager().getEntityManagerFactory().getCache();
if(cache != null){
    cache.evictAll();
}
Query qry = em.createQuery(query);
qry.setHint("javax.persistence.cache.storeMode", "REFRESH");

がんばらねば。。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村