|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectorg.seasar.doma.jdbc.tx.LocalTransaction
public class LocalTransaction
ローカルトランザクションです。
このクラスはスレッドセーフです。
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();
}
トランザクション開始後、このクラスのいずれかのメソッドが例外をスローした場合、 トランザクションは直ちにロールバックされます。
| フィールドの概要 | |
|---|---|
protected String |
className
クラス名 |
protected DataSource |
dataSource
データソース |
protected TransactionIsolationLevel |
defaultTransactionIsolationLevel
デフォルトのトランザクション分離レベル、指定されない場合 null |
protected JdbcLogger |
jdbcLogger
JDBCに関するロガー |
protected ThreadLocal<org.seasar.doma.jdbc.tx.LocalTransactionContext> |
localTxContextHolder
ローカルトランザクションコンテキストのホルダー |
| コンストラクタの概要 | |
|---|---|
protected |
LocalTransaction(DataSource dataSource,
ThreadLocal<org.seasar.doma.jdbc.tx.LocalTransactionContext> localTxContextHolder,
JdbcLogger jdbcLogger)
インスタンスを構築します。 |
protected |
LocalTransaction(DataSource dataSource,
ThreadLocal<org.seasar.doma.jdbc.tx.LocalTransactionContext> localTxContextHolder,
JdbcLogger jdbcLogger,
TransactionIsolationLevel defaultTransactionIsolationLevel)
デフォルトのトランザクション分離レベルを指定してインスタンスを構築します。 |
| メソッドの概要 | |
|---|---|
void |
begin()
ローカルトランザクションを開始します。 |
void |
begin(TransactionIsolationLevel transactionIsolationLevel)
トランザクション分離レベルを指定してローカルトランザクションを開始します。 |
protected void |
beginInternal(TransactionIsolationLevel transactionIsolationLevel,
String callerMethodName)
内部的にローカルトランザクションを開始します。 |
void |
commit()
ローカルトランザクションをコミットします。 |
protected org.seasar.doma.jdbc.tx.LocalTransactionContext |
createLocalTransactionContext()
ローカルトランザクションコンテキストを生成します。 |
protected void |
end(String callerMethodName)
ローカルトランザクションを終了します。 |
protected void |
endInternal(org.seasar.doma.jdbc.tx.LocalTransactionContext context,
String callerMethodName)
|
boolean |
hasSavepoint(String savepointName)
このローカルトランザクションでセーブポイントを保持しているかどうかを返します。 |
boolean |
isActive()
ローカルトランザクションがアクティブな場合 true を返します。 |
protected boolean |
isActiveInternal(org.seasar.doma.jdbc.tx.LocalTransactionContext context)
|
protected void |
release(org.seasar.doma.jdbc.tx.LocalTransactionContext context,
String callerMethodName)
トランザクションコンテキストを開放します。 |
void |
releaseSavepoint(String savepointName)
ローカルトランザクションから指定されたセーブポイントと以降のセーブポイントを削除します。 |
void |
rollback()
ローカルトランザクションをロールバックします。 |
void |
rollback(String savepointName)
指定されたセーブポイントが設定されたあとに行われたすべての変更をロールバックします。 |
protected void |
rollbackInternal(String callerMethodName)
内部的にロールバックします。 |
void |
setSavepoint(String savepointName)
ローカルトランザクションのセーブポイントを作成します。 |
String |
toString()
トランザクションを識別するための文字列表現を返します。 |
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| フィールドの詳細 |
|---|
protected final DataSource dataSource
protected final ThreadLocal<org.seasar.doma.jdbc.tx.LocalTransactionContext> localTxContextHolder
protected final JdbcLogger jdbcLogger
protected final TransactionIsolationLevel defaultTransactionIsolationLevel
null
protected final String className
| コンストラクタの詳細 |
|---|
protected LocalTransaction(DataSource dataSource,
ThreadLocal<org.seasar.doma.jdbc.tx.LocalTransactionContext> localTxContextHolder,
JdbcLogger jdbcLogger)
dataSource - データソースlocalTxContextHolder - ローカルトランザクションコンテキストのホルダーjdbcLogger - JDBCに関するロガー
protected LocalTransaction(DataSource dataSource,
ThreadLocal<org.seasar.doma.jdbc.tx.LocalTransactionContext> localTxContextHolder,
JdbcLogger jdbcLogger,
TransactionIsolationLevel defaultTransactionIsolationLevel)
dataSource - データソースlocalTxContextHolder - ローカルトランザクションコンテキストのホルダーjdbcLogger - JDBCに関するロガーdefaultTransactionIsolationLevel - デフォルトのトランザクション分離レベル| メソッドの詳細 |
|---|
public void begin()
このメソッドを呼び出した場合、commit() もしくは rollback()
を呼び出し、ローカルトランザクションを終了する必要があります。同一スレッド内であれば、 異なるインスタンスの commit()
もしくは rollback() でも構いません。
LocalTransactionAlreadyBegunException - ローカルトランザクションがすでに開始されている場合
JdbcException - トランザクションの開始に失敗した場合public void begin(TransactionIsolationLevel transactionIsolationLevel)
このメソッドを呼び出した場合、commit() もしくは rollback()
を呼び出し、ローカルトランザクションを終了する必要があります。同一スレッド内であれば、 異なるインスタンスの commit()
もしくは rollback() でも構いません。
transactionIsolationLevel - トランザクション分離レベル
DomaNullPointerException - 引数が null の場合
LocalTransactionAlreadyBegunException - ローカルトランザクションがすでに開始されている場合
JdbcException - トランザクションの開始に失敗した場合
protected void beginInternal(TransactionIsolationLevel transactionIsolationLevel,
String callerMethodName)
transactionIsolationLevel - トランザクション分離レベルcallerMethodName - 呼び出し元のメソッド名protected org.seasar.doma.jdbc.tx.LocalTransactionContext createLocalTransactionContext()
public void commit()
このメソッドを呼び出す前に begin() または
begin(TransactionIsolationLevel)
を呼び出し、ローカルトランザクションを開始しておく必要があります。 同一スレッド内であれば、 異なるインスタンスの
begin() または begin(TransactionIsolationLevel) でも構いません。
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合
JdbcException - コミットに失敗した場合public void rollback()
ローカルトランザクションが開始されていない場合、何もおこないません。
このメソッドは、例外をスローしません。
protected void rollbackInternal(String callerMethodName)
このメソッドは、実行時例外をスローしません。
callerMethodName - 呼び出し元のメソッド名public void setSavepoint(String savepointName)
このメソッドを呼び出す前に begin() または
begin(TransactionIsolationLevel)
を呼び出し、ローカルトランザクションを開始しておく必要があります。 同一スレッド内であれば、 異なるインスタンスの
begin() または begin(TransactionIsolationLevel) でも構いません。
savepointName - セーブポイントの名前
DomaNullPointerException - 引数が null の場合
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合
SavepointAleadyExistsException - セーブポイントがすでに存在する場合
JdbcException - セーブポイントの作成に失敗した場合public boolean hasSavepoint(String savepointName)
savepointName - セーブポイントの名前
ture
DomaNullPointerException - 引数が null の場合
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合public void releaseSavepoint(String savepointName)
このメソッドを呼び出す前に begin() または
begin(TransactionIsolationLevel)
を呼び出し、ローカルトランザクションを開始しておく必要があります。 同一スレッド内であれば、 異なるインスタンスの
begin() または begin(TransactionIsolationLevel) でも構いません。
savepointName - セーブポイントの名前
DomaNullPointerException - 引数が null の場合
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合
JdbcException - セーブポイントの削除に失敗した場合public void rollback(String savepointName)
このメソッドを呼び出す前に begin() または
begin(TransactionIsolationLevel)
を呼び出し、ローカルトランザクションを開始しておく必要があります。 同一スレッド内であれば、 異なるインスタンスの
begin() または begin(TransactionIsolationLevel) でも構いません。
savepointName - セーブポイントの名前
DomaNullPointerException - 引数が null の場合
SavepointNotFoundException - セーブポイントが見つからない場合
LocalTransactionNotYetBegunException - ローカルトランザクションがまだ開始されていない場合
JdbcException - セーブポイントへのロールバックに失敗した場合protected void end(String callerMethodName)
このメソッドは、実行時例外をスローしません。
callerMethodName - 呼び出し元のメソッド名
protected void endInternal(org.seasar.doma.jdbc.tx.LocalTransactionContext context,
String callerMethodName)
protected void release(org.seasar.doma.jdbc.tx.LocalTransactionContext context,
String callerMethodName)
このメソッドは、実行時例外をスローしません。
context - トランザクションコンテキストcallerMethodName - 呼び出し元のメソッド名public String toString()
Object 内の toStringpublic boolean isActive()
true を返します。
trueprotected boolean isActiveInternal(org.seasar.doma.jdbc.tx.LocalTransactionContext context)
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||