■
トランザクションを開始して、
コネクションプールからコネクションを取得・クローズを
繰り返しても、トランザクションが維持されるって
不思議な気がしませんか。
Seasarでは、トランザクション中にコネクションが
クローズされると、トランザクションのID(Xid)をキー
にしたMap(_txPool)に保存しておくようになってます。
コネクションを取得するときには、トランザクション中なら、
Xidをキーにして、_txPoolからコネクションを取り出し、
あれば、それを返すようになっているので、
同一トランザクション中は、プールから同一のコネクションが
返ることになります。
そのため、トランザクションが維持されるわけです。