Hibernate 3 を Hibernate 4 にアップグレードした後、Spring ベースのアプリから HibernateTemplate を削除せざるを得なくなりました。Hibernate セッションを利用できるようにするには、以前よりも一貫性のあるトランザクション境界を使用する必要があります。これには、トランザクション アドバイスをサービス レイヤーに追加するだけでなく、読み取り専用のデータベース操作を実行するバックグラウンド スレッドに細心の注意を払う必要があります。
私は 2 つのデータ ソースを持っています (2 つの異なるデータベースを使用する必要があります)。1 つ目はほぼすべてのアプリケーション リクエストに使用され、2 つ目は特別な (たとえば 1000 のうちの 1 つ) リクエストにのみ使用されます。最も簡単なのは、アスペクトを使用して、両方のデータベースのトランザクションで両方のリクエスト タイプをラップすることです (どのリクエストがどのデータベースを必要とするかを判断する必要はありません) が、これに伴うオーバーヘッドについて疑問に思っています。実際のデータベース接続の取得とトランザクション ロジック (コミットなど) は、実際のクエリが実行されるまで延期されますか? または、私のアプローチでは、多くの (実際には使用されていない) トランザクションが開始およびコミットされますか?
明確にするために、2 つのデータ ソース、2 つのトランザクション マネージャー、2 つの (同一の) "inServiceLayer" ポイントカットに対する 2 つのトランザクション アドバイスがあります。
助けてくれてありがとう!