public class TransactionImpl extends java.lang.Object implements Transaction
コネクションを共有して、トランザクションを実現します。 基本的には、TransactionTag で利用されますが、一部、このオブジェクトを 渡して、直接、利用するケースもあります。 トランザクションがすべて完了した後で、realClose() メソッドを呼び出します。 一度でも、rollback が指定されていれば、ロールバックを行い、コネクションを 破棄します。それ以外で、commit が指定されていれば、コミットを行い、 コネクションを、プールに戻します。どちらも指定されていなければ、 コネクションプールに戻すだけになります。 6.3.6.1 (2015/08/28) selectを実行した後で明示的にcommit,rollbackを行わないのはOracle位 らしいので、検索終了時でも、commit か、rollback を行うようにします。 つまり、commit されない(=途中で処理が打ち切られた)場合は、 rollback するように仕様変更しますので、Transactionオブジェクトを 呼び出した処理の最後には、検索であろうとなかろうと、commit()を入れてください。 ただし、Transaction オブジェクトは、DBアクセス以外にも適用可能に 作成しているため、Connection がある場合のみ、実際の commit/rollback が 実行されます。 6.3.6.1 (2015/08/28) 一度、finish() を実行すると、次回実行時にエラーにします。 6.3.9.0 (2015/11/06) synchronized メソッドをsynchronizedブロックに変更。 考え方として、下記のような流れになります。Transaction tran = new TransactionImpl/Real( appInfo ) ; try { ・・・・・ tran.commit(); } catch( final Exception ex ) { tran.rollback(); } finally { tran.close(); // TransactionReal の場合 tran.finish(); // TransactionImpl の場合 }6.3.6.1 (2015/08/28) AutoCloseableを使用したtry-with-resources 構文を使用した場合。close/finish 不要。try( final Transaction tran = new TransactionImpl/Real( appInfo ) ) { ・・・・・ tran.commit(); } ただし、処理自体がアベンドしないケースでは、rollback() を、自分で呼ぶか、commit() しない(=rollback()される)ようにします。
5.1.9.0 (2010/08/01) 新規作成 |
コンストラクタと説明 |
---|
TransactionImpl(ApplicationInfo appInfo)
ApplicationInfo を指定して作成する、コンストラクター
このクラスは、基本的には、TransactionTag クラスから作成されます。
|
修飾子とタイプ | メソッドと説明 |
---|---|
void |
close()
トランザクションの、終了時処理を行います。
|
void |
commit()
コミット処理が行われた場合に、内部フラグ(isCommit)を true にセットします。
|
void |
endCommit()
最終的なコミットが行われた場合に、内部フラグ(isEndCommit)を true にセットします。
|
void |
finish()
トランザクションとして、終了時処理を行います。
|
java.sql.Connection |
getConnection(java.lang.String dbid)
指定のDBID に対応した、Connection オブジェクトを返します。
|
void |
rollback()
ロールバック処理が行われた場合に、内部フラグ(isRollback)を true にセットします。
|
public TransactionImpl(ApplicationInfo appInfo)
appInfo
- 内部統制用のアクセス情報public java.sql.Connection getConnection(java.lang.String dbid)
getConnection
インタフェース内 Transaction
dbid
- 接続先ID6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD) |
6.4.3.4 (2016/03/11) Map#computeIfAbsent で対応する。 |
public void commit()
commit
インタフェース内 Transaction
6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。return 不要。 |
6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD) |
public void rollback()
rollback
インタフェース内 Transaction
6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。return 不要。 |
6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD) |
public void close()
close
インタフェース内 java.lang.AutoCloseable
close
インタフェース内 Transaction
AutoCloseable.close()
6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。return 不要。 |
6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD) |
public void endCommit()
endCommit
インタフェース内 Transaction
6.4.3.3 (2016/03/04) 一般的なタグで、SKIP_PAGE された場合、rollback するようにします。 |
public void finish()
6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。メソッド名変更。 |
6.3.9.0 (2015/11/06) Use block level rather than method level synchronization.(PMD) |
6.4.3.4 (2016/03/11) Map#computeIfAbsent で対応する。 |
Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.