2016-12-01 11 views
1

私はのJava Persistence with Hibernateを読んでおり、次のテキストが見つかりました。AtomikosのようなJTAプロバイダとHikariCPのような接続プールとの関係は何ですか?

今日、そのような(本書のサンプルコードに使用)BitronixとAtomikosなどの高品質なスタンドアロンのJTAプロバイダが利用可能であり、任意のJava環境で設置が簡単です。これらのソリューションは、JTA対応のデータベース接続プールと考えることができます。

私が理解しているように、JTAプロバイダには独自の接続プールがあります。

したがって、彼らはHikariCPとC3P0のような接続プールと統合しますか?ありがとうございました。

答えて

3

答えはNOです.JTAプロバイダとこれらのJDBC接続プールを組み合わせることはできません。

短い理由は次のとおりです。 JTAプロバイダがXADataSourceを必要とし、あなたによって名付けられたJDBC接続プールは、ちょうど標準DataSourceを持っています。

さらに詳しい理由は次のとおりです。 処理するJTAプロバイダグローバルトランザクション - グローバルとは異なるデータソースを意味します。 (例えば、あなたの操作がデータベース/ DataSource 1とデータベース/ DataSource 2の何かをしたい場合、これらのパーツのいずれかが失敗すると、データベース/データソースの両方に何も起こらなかったかのように両方のパーツがロールバックされます) Two Phase-Commitによって、これにはXADataSourceが必要です。 JDBC接続プールは、1つのデータソースのみを使用するアプリケーション(JTAを必要としないアプリケーションの場合)には軽量です(もちろん、どちらも使用できます)。

+0

ありがとうございました。だから、Spring Boot appのようなものがあり、それは1つのDataSourceで動作し、宣言的なtxマネージャを使いたいときにはどうすればよいでしょうか? – Taras

+0

@Taras定期的な接続プールと春の取引。 – Kayaman

+0

Gotcha。ありがとう、@カヤマン。 – Taras