org.seasar.doma.jdbc.tx
クラス LocalTransaction

java.lang.Object
  上位を拡張 org.seasar.doma.jdbc.tx.LocalTransaction

public final class LocalTransaction
extends java.lang.Object

ローカルトランザクションです。

このクラスはスレッドセーフです。

begin() もしくは begin(TransactionIsolationLevel) でトランザクションを開始した後、トランザクションは必ず commit() もしくは rollback() で終了してください。 rollback()は、begin() が成功する前や commit() が成功した後に呼び出された場合、実質的には何も行いません。したがって、次のように記述できます。

 LocalTransaction tx = AppConfig.getLocalTransaction();
 try {
     // 開始
     tx.begin();
 
     Employee employee = dao.selectById(1);
     employee.setName("hoge");
     employee.setJobType(JobType.PRESIDENT);
     dao.update(employee);
 
     // コミット
     tx.commit();
 } finally {
     // ロールバック
     tx.rollback();
 }
 
トランザクションを終了した後、 同じインスタンスに対して begin() もしくは begin(TransactionIsolationLevel) を呼び出した場合、新しいトランザクションを開始できます。
 LocalTransaction tx = AppConfig.getLocalTransaction();
 try {
     // トランザクションAの開始
     tx.begin();
     ...
     tx.commit();
 } finally {
     tx.rollback();
 }
 try {
     // トランザクションBの開始
     tx.begin();
     ...
     tx.commit();
 } finally {
     tx.rollback();
 }
 
トランザクション開始後、このクラスのいずれかのメソッドが例外をスローした場合、 トランザクションは直ちにロールバックされます。

導入されたバージョン:
1.1.0
作成者:
taedium

メソッドの概要
 void begin()
          ローカルトランザクションを開始します。
 void begin(TransactionIsolationLevel transactionIsolationLevel)
          トランザクション分離レベルを指定してローカルトランザクションを開始します。
 void commit()
          ローカルトランザクションをコミットします。
 boolean hasSavepoint(java.lang.String savepointName)
          このローカルトランザクションでセーブポイントを保持しているかどうかを返します。
 boolean isActive()
          ローカルトランザクションがアクティブな場合 true を返します。
 void releaseSavepoint(java.lang.String savepointName)
          ローカルトランザクションから指定されたセーブポイントと以降のセーブポイントを削除します。
 void rollback()
          ローカルトランザクションをロールバックします。
 void rollback(java.lang.String savepointName)
          指定されたセーブポイントが設定されたあとに行われたすべての変更をロールバックします。
 void setSavepoint(java.lang.String savepointName)
          ローカルトランザクションのセーブポイントを作成します。
 java.lang.String toString()
          トランザクションを識別するための文字列表現を返します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

メソッドの詳細

begin

public void begin()
ローカルトランザクションを開始します。

このメソッドを呼び出した場合、commit() もしくは rollback() を呼び出し、ローカルトランザクションを終了する必要があります。同一スレッド内であれば、 異なるインスタンスの commit() もしくは rollback() でも構いません。

例外:
LocalTransactionAlreadyBegunException - ローカルトランザクションがすでに開始されている場合
JdbcException - トランザクションの開始に失敗した場合

begin

public void begin(TransactionIsolationLevel transactionIsolationLevel)
トランザクション分離レベルを指定してローカルトランザクションを開始します。

このメソッドを呼び出した場合、commit() もしくは rollback() を呼び出し、ローカルトランザクションを終了する必要があります。同一スレッド内であれば、 異なるインスタンスの commit() もしくは rollback() でも構いません。

パラメータ:
transactionIsolationLevel - トランザクション分離レベル
例外:
DomaNullPointerException - 引数が null の場合
LocalTransactionAlreadyBegunException - ローカルトランザクションがすでに開始されている場合
JdbcException - トランザクションの開始に失敗した場合

commit

public void commit()
ローカルトランザクションをコミットします。

このメソッドを呼び出す前に begin() または begin(TransactionIsolationLevel) を呼び出し、ローカルトランザクションを開始しておく必要があります。 同一スレッド内であれば、 異なるインスタンスの begin() または begin(TransactionIsolationLevel) でも構いません。

例外:
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合
JdbcException - コミットに失敗した場合

rollback

public void rollback()
ローカルトランザクションをロールバックします。

ローカルトランザクションが開始されていない場合、何もおこないません。

このメソッドは、例外をスローしません。


setSavepoint

public void setSavepoint(java.lang.String savepointName)
ローカルトランザクションのセーブポイントを作成します。

このメソッドを呼び出す前に begin() または begin(TransactionIsolationLevel) を呼び出し、ローカルトランザクションを開始しておく必要があります。 同一スレッド内であれば、 異なるインスタンスの begin() または begin(TransactionIsolationLevel) でも構いません。

パラメータ:
savepointName - セーブポイントの名前
例外:
DomaNullPointerException - 引数が null の場合
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合
SavepointAleadyExistsException - セーブポイントがすでに存在する場合
JdbcException - セーブポイントの作成に失敗した場合

hasSavepoint

public boolean hasSavepoint(java.lang.String savepointName)
このローカルトランザクションでセーブポイントを保持しているかどうかを返します。

パラメータ:
savepointName - セーブポイントの名前
戻り値:
セーブポイントを保持している場合 ture
例外:
DomaNullPointerException - 引数が null の場合
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合
導入されたバージョン:
1.2.0

releaseSavepoint

public void releaseSavepoint(java.lang.String savepointName)
ローカルトランザクションから指定されたセーブポイントと以降のセーブポイントを削除します。

このメソッドを呼び出す前に begin() または begin(TransactionIsolationLevel) を呼び出し、ローカルトランザクションを開始しておく必要があります。 同一スレッド内であれば、 異なるインスタンスの begin() または begin(TransactionIsolationLevel) でも構いません。

パラメータ:
savepointName - セーブポイントの名前
例外:
DomaNullPointerException - 引数が null の場合
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合
JdbcException - セーブポイントの削除に失敗した場合

rollback

public void rollback(java.lang.String savepointName)
指定されたセーブポイントが設定されたあとに行われたすべての変更をロールバックします。

このメソッドを呼び出す前に begin() または begin(TransactionIsolationLevel) を呼び出し、ローカルトランザクションを開始しておく必要があります。 同一スレッド内であれば、 異なるインスタンスの begin() または begin(TransactionIsolationLevel) でも構いません。

パラメータ:
savepointName - セーブポイントの名前
例外:
DomaNullPointerException - 引数が null の場合
SavepointNotFoundException - セーブポイントが見つからない場合
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合
JdbcException - セーブポイントへのロールバックに失敗した場合

isActive

public boolean isActive()
ローカルトランザクションがアクティブな場合 true を返します。

戻り値:
ローカルトランザクションがアクティブな場合 true

toString

public java.lang.String toString()
トランザクションを識別するための文字列表現を返します。

オーバーライド:
クラス java.lang.Object 内の toString


Copyright © 2009-2010 The Seasar Foundation. All Rights Reserved.