org.opengion.fukurou.db

## インタフェース Transaction

- すべてのスーパーインタフェース:
    AutoCloseable
  既知の実装クラスのリスト:
    TransactionImpl, TransactionReal

      public interface Transaction
      extends AutoCloseable

       コネクションを共有して、トランザクションを実現するインターフェースです。

       基本的には、TransactionTag で利用されますが、一部、このオブジェクトを
       渡して、直接、利用するケースもあります。

       トランザクション の実クラスには、close()時に、commit,rollback を行う、
       TransactionReal クラスと、内部にキャッシュされた コネクションを、終了時点で
       一括処理を行う、TransactionImpl があります。
       TransactionTag で利用するのが、TransactionImpl で、Connectionのラッパーとして
       利用するのが、TransactionReal クラスになります。

       6.3.6.1 (2015/08/28)
         selectを実行した後で明示的にcommit,rollbackを行わないのはOracle位
         らしいので、検索終了時でも、commit か、rollback を行うようにします。
         つまり、commit されない(=途中で処理が打ち切られた)場合は、
         rollback するように仕様変更しますので、Transactionオブジェクトを
         呼び出した処理の最後には、検索であろうとなかろうと、commit()を入れてください。
         ただし、Transaction オブジェクトは、DBアクセス以外にも適用可能に
         作成しているため、Connection がある場合のみ、実際の commit/rollback が
         実行されます。

  変更履歴:

    5.1.9.0 (2010/08/01) 新規作成

  バージョン
    5.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK6.0,

- - ### メソッドのサマリー

    すべてのメソッド インスタンス・メソッド abstractメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `void` | `close()` トランザクションの、終了時処理を行います。
    `void` | `commit()` コミット処理が行われた場合に、内部フラグ(isCommit)を true にセットします。
    `void` | `endCommit()` 最終的なコミットが行われた場合に、内部フラグ(isEndCommit)を true にセットします。
    `Connection` | `getConnection(String dbid)` 指定のDBID に対応した、Connection オブジェクトを返します。
    `void` | `rollback()` ロールバック処理が行われた場合に、内部フラグ(isRollback)を true にセットします。

- - ### メソッドの詳細

    - #### getConnection

          Connection getConnection(String dbid)

      指定のDBID に対応した、Connection オブジェクトを返します。 内部Mapに存在していれば、そのコネクションを、存在しなければ、 新しく作成します。 Connection をキャッシュに戻すなどは、Transaction実装クラスで行います。
      パラメータ:
        `dbid` - 接続先ID
      戻り値:
        指定のDBID に対応した、コネクションオブジェクト

    - #### commit

          void commit()

      コミット処理が行われた場合に、内部フラグ(isCommit)を true にセットします。 １回でもコミットが行われており、ロールバックが行われていなければ、 コミットされます。 // * 検索処理のみで、エラーが発生していない場合は、コミットも行われないケースがあります。 検索処理時でも、最後に commit() を実行してください。実行されていない場合は、 自動的に、rollback() が、実行されます。
      変更履歴:

        6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。return 不要。 // * @return 正常:true/異常:false

    - #### rollback

          void rollback()

      ロールバック処理が行われた場合に、内部フラグ(isRollback)を true にセットします。 １回でもロールバックが行われていれば、最終的にはロールバックされます。 一度も、ロールバックが行われていない場合でも、コミットが行われていない場合は、 rollback()を実行します。
      変更履歴:

        6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。return 不要。 // * @return 正常:true/異常:false

    - #### close

          void close()

      トランザクションの、終了時処理を行います。 それまでの処理は、すべて正常に処理できた場合に、使用します。 // * close( false ) と同じです。
      定義:
        `close` インタフェース内 `AutoCloseable`
      関連項目:
        `AutoCloseable.close()`
      変更履歴:

        6.3.6.1 (2015/08/28) AutoCloseable の close() メソッドに対応。return 不要。 // * @return 正常:true/異常:false

    - #### endCommit

          void endCommit()

      最終的なコミットが行われた場合に、内部フラグ(isEndCommit)を true にセットします。 通常は、この処理は、１値度だけ実行されます。 初期値が、false なので、途中で一度でも実行されると、true にセットされ、最後まで 処理されたとみなされてしまうので、注意してください。 通常は、タグリブの、doEndTag() が実行された場合に、呼びます。 このフラグが、true でないと（つまり、一度でも呼ばれないと）最終的に、commit されません。 なお、endCommit() が呼ばれると、自動的に、commit() も呼んでおきます。
      変更履歴:

        6.4.3.3 (2016/03/04) 一般的なタグで、SKIP_PAGE された場合、rollback するようにします。

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.