2

私のプロジェクトでは、Hibernate を利用して基本的な操作の開発速度を上げ、Spring の JDBC テンプレートと組み合わせて、特定の操作に独自の SQL クエリを使用し、制御を緩めないようにしたいと考えています。 、重い、パフォーマンスが要求される操作があるためです。

これは可能ですか、それとも良い考えですか?

4

1 に答える 1

2

はい、可能です。はい、それは良い考えです。

ドキュメントには次のように記載されています。

複数の Hibernate セッション ファクトリにまたがる分散トランザクションの場合、トランザクション戦略として JtaTransactionManager を複数の LocalSessionFactoryBean 定義と組み合わせるだけです。次に、各 DAO は、対応する Bean プロパティに渡される特定の SessionFactory 参照を 1 つ取得します。基礎となるすべての JDBC データ ソースがトランザクション コンテナのものである場合、ビジネス サービスは、戦略として JtaTransactionManager を使用している限り、特別な考慮なしに、任意の数の DAO および任意の数のセッション ファクトリ間でトランザクションを区別できます。

[...]

HibernateTransactionManager は、特定の DataSource に対して、Hibernate JDBC 接続をプレーンな JDBC アクセス コードにエクスポートできます。この機能により、1 つのデータベースのみにアクセスしている場合、JTA を完全に使用せずに、Hibernate と JDBC が混在するデータ アクセスによる高レベルのトランザクション境界設定が可能になります。LocalSessionFactoryBean クラスの dataSource プロパティを介して DataSource を使用して渡された SessionFactory を設定した場合、HibernateTransactionManager は Hibernate トランザクションを JDBC トランザクションとして自動的に公開します。または、HibernateTransactionManager クラスの dataSource プロパティを使用して、トランザクションが公開されることになっている DataSource を明示的に指定することもできます。

そのため、JTA トランザクションと DataSource をサポートするフルスタック Java EE コンテナーを使用している場合は、Java EE コンテナーで定義された DataSource と JTATransactionManager を使用します。

Tomcat などの単純な Web コンテナーを使用している場合は、Spring が提供する DataSource と HibernatTransactionManager を使用します。

于 2013-06-04T06:53:03.367 に答える