OpenJPA 1.2 から Hiberante 4.0 に移行しました
TimesTen DB を使用してい ます
私はネイティブクエリを実行して、必要なオブジェクトの ID を取得し、それぞれに対して検索を実行しています。OpenJPA
find の代わりにメソッドfindCache()
を使用し、それが null を返す場合はfind()
メソッドを使用します。休止状態では、find()
メソッドのみを使用しました。
同じDBでこの操作を実行しました。
いくつかのテストを実行した後、OpenJPA のパフォーマンスがはるかに優れていることがわかりました。
(クエリを実行して同じオブジェクトを見つけた後) hibernate セッションの統計を出力したhit\miss
ところ、最初のレベルのキャッシュへのカウントが常に 0 であることがわかりました。一方、OpenJPA は、メソッドを使用してオブジェクトをフェッチすることにより、そのキャッシュに明確に到達していますfindCache
。
Hibernate での find のパフォーマンスを改善するにはどうすればよいですか? このツールの第 1 レベル キャッシュの実装の違いに言及していると思われます。
別の事実: アプリケーションの実行時に同じ EntityManager を使用します (EntityManager の作成コストを最小限に抑える必要があります - 私のアプリはソフト リアルタイムです)。
ありがとう。