Hibernateでは、セッションキャッシュ&セッションファクトリレベルのキャッシュを持つことができます。オブジェクトがどこから来たのか、セッションキャッシュかセッションファクトリキャッシュ
両方が有効になっていて、エンティティを取得している場合は、エンティティがどこから来たのかを知る方法はありますか?それが第1レベルのキャッシュか第2レベルのキャッシュか。それを知るためにSessionにどのような方法がありますか?
Hibernateでは、セッションキャッシュ&セッションファクトリレベルのキャッシュを持つことができます。オブジェクトがどこから来たのか、セッションキャッシュかセッションファクトリキャッシュ
両方が有効になっていて、エンティティを取得している場合は、エンティティがどこから来たのかを知る方法はありますか?それが第1レベルのキャッシュか第2レベルのキャッシュか。それを知るためにSessionにどのような方法がありますか?
クエリの前にエンティティの識別子が分かっている場合は、2LCキャッシュを調べて、そのエンティティがスコープキャッシュSessionFactory
に少なくともキャッシュされているかどうかを判断できます。次の方法を使用してこれを行うことができます。
session.getSessionFactory()。getCache()。containsEntity(EntityClass.class、entityId);あなたは、エンティティのダミーインスタンスを構築する識別子の値を設定して、メソッドを呼び出すことによって1LCを尋ねることができるかもしれ
:
session.contains(theEntityInstance)。
これらの2つの方法のいずれかを呼び出す前に、その識別子を持つ特定のエンティティのクエリを発行した場合、エンティティが存在し、これら2つのメソッド呼び出しの結果は常にtrue
です。