ひがやすを技術ブログ

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

トランザクションを開始して、
コネクションプールからコネクションを取得・クローズを
繰り返しても、トランザクションが維持されるって
不思議な気がしませんか。

Seasarでは、トランザクション中にコネクションが
クローズされると、トランザクションのID(Xid)をキー
にしたMap(_txPool)に保存しておくようになってます。

コネクションを取得するときには、トランザクション中なら、
Xidをキーにして、_txPoolからコネクションを取り出し、
あれば、それを返すようになっているので、
同一トランザクション中は、プールから同一のコネクションが
返ることになります。
そのため、トランザクションが維持されるわけです。