Domaは、ローカルトランザクションをサポートします。このドキュメントでは、ローカルトランザクションの設定方法と利用方法について説明します。
グローバルトランザクションを使用したい場合は、JTA(Java Transaction API)の実装をもつフレームワークやアプリケーションサーバーの機能を利用してください。
ローカルトランザクションのサンプルはチュートリアルを、 JTAを使ったグローバルトランザクションのサンプルはDoma JPetStoreを参照ください。
ローカルトランザクションを有効にするには、データソースとしてLocalTransactionalDataSourceを使用します。
このクラスのインスタンスは設定クラスでシングルトンとして管理し、getDataSource()メソッドで外部に返すようにしてください。
LocalTransactionalDataSourceのgetLocalTransaction(JdbcLogger)メソッドは、LocalTransactionを生成して返します。
このクラスのインスタンスがローカルトランザクションを表します。
このインスタンスを外部へ返すためのメソッドを設定クラスに作成してください。
ローカルトランザクションに対応した設定クラスの例は以下のとおりです。
設定クラスをDaoインタフェースに以下のように注釈するとして例を示します。
設定クラスからLocalTransactionalを取得し、トランザクションをbegin()で開始し、commit()またはrollback()でトランザクションを終了します。
次のように記述することもできます。
begin()で開始されたトランザクションは、必ずcommit()またはrollback()で終了しなければいけません。
LocalTransactionalDataSourceを利用するデータアクセスは、例外なく必ずローカルトランザクションの中で実行しなければいけません。
トランザクションはトランザクション分離レベルを指定して開始することができます。
セーブポイントを使用することで、トランザクション中の特定の変更を取り消すことができます。