2011-10-26 9 views
2
for(int i = 0; i < 10000; i++) { 
    Foo foo = dao.loadFooById(i); 
} 
//dao.getEntityManager().clear(); 
Bar bar = dao.loadBarById(0); 

loadBarById(0)メソッドの場合、このコードは200msかかるでしょう。コメント行のコメントを外すと、< 1 msとなります。 FooエンティティとBarエンティティの間には熱心な関係はありません。永続コンテキストのサイズがエンティティの読み込み時間に影響するのはなぜですか?永続コンテキストのサイズがHibernateのクエリ時間に影響する理由

FYI:大きな永続性コンテキストを持つ他のすべての問題に苦しみ、エンティティのバッチで操作して管理する必要があることを認識しています。これは私の理解のためのものです。

答えて

2

PersistenceContext(Hibernate Session)は、あらゆる種類の値とプロキシのキャッシュです。トランザクションがアクティブな場合、ロールバック情報もどこかに格納されます。永続性マネージャ/セッションを消去すると、キャッシュがより高速に動作します。

シングルセッションで読み込まれるオブジェクトの量に注意するか、パフォーマンス上の問題が発生します。

関連する問題