1

私たちのプロジェクトは、DB アクセスに Hibernate 3.0 を使用しています。クエリとエンティティをキャッシュするために、第 2 レベルのキャッシュとクエリ キャッシュを使用しています。EhCache は、キャッシュの目的で使用されます。

DAO メソッド getData() はデータをフェッチし、セッションが閉じられる前に Hibernate.initialize() を使用してすべての関連付けを初期化します。

メイン実行スレッドは、非同期実行タスクをトリガーして、さまざまなモジュールのデータを生成します。これらのタスクは、上記のメソッドを呼び出してデータを取得します。最初の db 呼び出しの後、クエリ、エンティティ、およびその関連付けがキャッシュされ、後続の呼び出しで DB ではなくキャッシュからフェッチできるようになります。
これらのタスクが追加作業のために完了した後、メイン スレッドは同じデータにアクセスします。

LOCAL 環境ではすべて正常に動作しますが、DEV/INT 環境ではコードが失敗します。

dev では、上記の DAO メソッドの呼び出しがメイン スレッドで失敗します。関連付けの 1 つの初期化が失敗しています。Hibernate.initialize() メソッド呼び出しは、データが存在する場合でも null を返します。非同期タスクでは同じ呼び出しが正常に機能しますが、メイン スレッドでのみ失敗します。ログには、キャッシュ ヒット/ミスに関連するステートメントは表示されませんが、タスクについてはそれらを表示できます

考えられる問題は何ですか?

4

0 に答える 0