ひがやすを技術ブログ

電通国際情報サービスのプログラマ

JTAとコネクションプール

そんなわけで,SpringはDataSource#getConnection()を直接使わず,代わりにDataSourceUtils#getConnection(DataSource)を使いましょう,ということになってます.こいつがスレッドコンテキストを提供するわけです.うーん,なんだかなぁー.
S2の場合はトランザクションマネージャと連携する独自のデータソース実装が提供されるため,アプリケーションは普通にDataSource#getConnection()を呼び出すことができます.どっちが魅力的か... 自分はS2だなぁ.

Springってあれだけ、コンテナのAPIには依存するなっていっておいて
最も使いそうなDataSource#getConnection()を使わずに
SpringのAPIを使えってどういうことよ。
ちなみに、S2ではアプリケーションサーバJTAとコネクションプールも
そのまま使えます。基本的に各コンポーネントは、インターフェース
(TransactionManager, DataSource)とお話し、実装は意識しないように
なってます。
やってないけど、WebLogicのTransactionManagerとS2DBCPも連動すると
思います。
アプリケーションサーバとの連携方法はこちら
http://homepage3.nifty.com/seasar/SabaJTAandDBCP.html
Springが各O/Rマッピングツールとの連携機能を作っているのは、
このあたりの独自性が原因なのか。
iBATISとの連携方法見てみたら、やっぱり使ってるよ、
DataSourceUtils#getConnection()
ということは、そのうちDbUtilsをサポートしましたなんていってくるのか。
S2ではそんな必要はなくそのままDbUtilsiBATISもそのまま使えます。