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()される)ようにします。
コンストラクタと説明 |
---|
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
- 接続先IDpublic void commit()
commit
インタフェース内 Transaction
public void rollback()
rollback
インタフェース内 Transaction
public void close()
close
インタフェース内 java.lang.AutoCloseable
close
インタフェース内 Transaction
AutoCloseable.close()
public void endCommit()
endCommit
インタフェース内 Transaction
public void finish()
Webアプリケーションフレームワーク openGionCopyright (c) 2009 The openGion Project.