2017-02-18 7 views
0

Hibernateでは、セッションキャッシュ&セッションファクトリレベルのキャッシュを持つことができます。オブジェクトがどこから来たのか、セッションキャッシュかセッションファクトリキャッシュ

両方が有効になっていて、エンティティを取得している場合は、エンティティがどこから来たのかを知る方法はありますか?それが第1レベルのキャッシュか第2レベルのキャッシュか。それを知るためにSessionにどのような方法がありますか?

答えて

1

クエリの前にエンティティの識別子が分かっている場合は、2LCキャッ​​シュを調べて、そのエンティティがスコープキャッシュSessionFactoryに少なくともキャッシュされているかどうかを判断できます。次の方法を使用してこれを行うことができます。

session.getSessionFactory()。getCache()。containsEntity(EntityClass.class、entityId);あなたは、エンティティのダミーインスタンスを構築する識別子の値を設定して、メソッドを呼び出すことによって1LCを尋ねることができるかもしれ

session.contains(theEntityInstance)。

これらの2つの方法のいずれかを呼び出す前に、その識別子を持つ特定のエンティティのクエリを発行した場合、エンティティが存在し、これら2つのメソッド呼び出しの結果は常にtrueです。

関連する問題