トランザクションイベント <バージョン0.3.0の概要へ戻る>

トランザクションイベントとは、トランザクションのコミット・ロールバックなどのタイミングで
イベントで結果を通知する機能全般を指します。

ユーザは、このトランザクションイベントをリスンすることによって、現在のトランザクションにおいて起こった出来事を知ることができます。

この機能を使うと以下のようなユースケースを実現できます。
  • データベースの特定のテーブルのカラムが更新されたかどうかを判断し「特定の処理」を自動実行する
  • トランザクションをコミットした時点で、そのトランザクションの実行に使われたデータを用いて、集計データを自動的に作成する
  • DELETEを実行後に、削除されたであろうデータを用いて特定の処理を行う
以下に、本バージョンにてリスン可能なトランザクションイベントの一覧を記載します
No.イベント名イベントクラスUBTC(ユーザベーストランザクション制御)
機能状態
イベントにて使用可能なデータなど
1INSERTorg.dyndns.nuda.mapper.event.implementation.InsertEventUBTC有効* INSERT処理に用いられたデータ
* 発行されたSQLを含むオブジェクト(SQLInterfaceBean)
2UPDATEorg.dyndns.nuda.mapper.event.implementation.UpdateEventUBTC有効* UPDATE処理に用いられたデータ
* 発行されたSQLを含むオブジェクト(SQLInterfaceBean)
3DELETEorg.dyndns.nuda.mapper.event.implementation.DeleteEventUBTC有効* DELETE処理にもちられたデータ
* 発行されたSQLを含むオブジェクト(SQLInterfaceBean)
3ROLLBACKorg.dyndns.nuda.mapper.event.implementation.RollBackEventUBTC有効* 発行されたSQLを含むオブジェクト(SQLInterfaceBean)
4TRANSACTION_COMPLETEDorg.dyndns.nuda.mapper.event.implementation.ManualTransactionEventUBTC無効* トランザクション内で用いられたデータ一覧
* トランザクション完了区分:commit/rollback
* 発行されたSQLを含むオブジェクト(SQLInterfaceBean)

トランザクションイベントの受け取り方

トランザクションイベントは「org.dyndns.nuda.mapper.event.SQLInterfaceEventProcessor」にて受け取ることができます。
以下に使い方の例を示します。
  1. SQLInterfaceEventProcessor.newInstance().addEventListener(
  2. new SQLInterfaceEventListener<InsertEvent>() {
  3. @Override
  4. public void handle(final InsertEvent event) {
  5. List<?> insertedObjects = event.getInsertedObjects();
  6. for (Object insertedObject : insertedObjects) {
  7. // 必要ならばinsertedObjectを他クラスにキャストして用いる
  8. if (insertedObject instanceof TestSchemeBean) {
  9. TestSchemeBean bean =
  10. (TestSchemeBean) insertedObject;
  11. int seq = bean.getSeq();
  12. String name = bean.getName();
  13. java.util.Date reg_date = bean.getReg_date();
  14. String desc = bean.getDescription();
  15. // 上記の値を使って処理を行う
  16. }
  17. System.out.println(insertedObject.toString()
  18. + " がINSERTされました");
  19. }
  20. }
  21. });