HibernateセッションとプレーンJDBCクエリに単一のトランザクション境界を使用することは可能ですか??データベースとデータソースの構成はどちらも似ています。
1 に答える
はい。を使用しHibernateTransactionManager
ます。以下はそのjavadocから抜粋したものです
この実装は、トランザクションデータアクセスにHibernateのみを使用するアプリケーションに適していますが、トランザクション内の直接データソースアクセス(つまり、同じデータソースで動作するプレーンJDBCコード)もサポートします。これにより、Hibernateにアクセスするサービス(トランザクションキャッシングを含む)とプレーンJDBCを使用するサービス(Hibernateを意識せずに)を混在させることができます!アプリケーションコードは、DataSourceTransactionManagerの場合と同じ単純な接続ルックアップパターン(つまり、DataSourceUtils.getConnectionまたはTransactionAwareDataSourceProxyを経由する)に固執する必要があります。
プレーンJDBCコードのデータソースの接続を登録できるようにするには、このインスタンスがデータソースを認識している必要があることに注意してください(setDataSourceを参照)。指定されたデータソースは、指定されたSessionFactoryによって使用されるデータソースと明らかに一致する必要があります。これを実現するには、両方を同じJNDIデータソースに構成するか、できればLocalSessionFactoryBeanとローカルデータソース(このトランザクションマネージャーによって自動検出されます)を使用してSessionFactoryを作成します。