seasarでDBまわりの設定 覚え書き

すべではこちらからの引用です。

javaトランザクション処理を実装する場合JTA(java transaction api)*1を使用する。JTAの実装はアプリケーションサーバが実装するが、tomcatのようにJTAの実装が無い場合、S2JTAを利用する。
標準のS2JTAの設定ファイルはs2-extension-2.4.x.jarファイルに入っている。

S2Txを利用するとPOJOクラスにトランザクションの自動管理機能を追加できる。
トランザクションの属性

属性 コンポーネント 説明
Required j2ee.requiredTx トランザクションが開始されていなければ、自動的にトランザクションを開始します。既にトランザクションが開始されていれば、そのトランザクションを引き継ぎます。
RequiresNew j2ee.requiresNewTx 常に新しいトランザクションを開始させます。既存のトランザクションが開始されているなら、既存のトランザクションを中断し、自分自身のトランザクションの終了後、中断したトランザクションを復帰させます。
Mandatory j2ee.mandatoryTx トランザクションが既に開始されてなければエラーにします。
NotSupported j2ee.notSupportedTx 既存のトランザクションが開始されているなら、既存のトランザクションを中断します。コンポーネントのメソッドの終了後、中断したトランザクションを復帰させます。

javaでデータベース接続する場合、データソース経由のコネクションプールを利用する。tomcatではJTAが実装されていないため、トランザクションと連動するコネクションプールの実装がない。そこで、S2DBCPを利用する。
つまり、S2DBCPでトランザクションとコネクションプール(データソース)を管理する。

設定パターン

試したこと無いけど、以下のようなパターンが考えられる!?

三番目はjdbc.diconにデータソースの設定をして、ここを参考にトランザクションの設定を行う。

*1:JTAトランザクションを扱うためにJ2EEで規定された一連のインタフェース。そのため、実装は各ベンダに任されている