org.guiceex.jpa.transaction
クラス TransactionPropagator

java.lang.Object
  上位を拡張 org.guiceex.jpa.transaction.TransactionPropagator
すべての実装されたインタフェース:
Cloneable

public abstract class TransactionPropagator
extends Object
implements Cloneable

TransactionAttributeTypeに応じたトランザクション処理を行います。 このクラスのインスタンスは、TransactionAttributeTypeに応じた実装を 伴って作成され、TransactionInterceptorでプロトタイプとして利用され、 都度作成された複製が実行されます。
Guiceex-0.9.1では、トランザクションはEntityManagerが持つトランザクション のみ操作ます。このため、「トランザクションを開始する」の意味は、「EntityManagerインスタンスを 新規作成し、EntityTransaction.begin()の呼び出しによって開始しする」 という事になります。
以下にTransactionAttributeType毎の振る舞いを説明します。

TransactionAttributeType EntityManagerが作成済みで
トランザクションが開始済み
EntityManagerが未作成か、
トランザクションが未開始
NOT_SUPPORTED EntityManagerを新規作成する。
トランザクションは開始しない。
EntityManager未作成の場合は作成する。
トランザクションは開始しない。
SUPPORTS 既存のトランザクションを使用。 EntityManager未作成の場合は作成する。
トランザクションは開始しない。
REQUIRED 既存のトランザクションを使用。 EntityManager未作成の場合は作成する。
トランザクションを開始する。
REQUIRES_NEW EntityManagerを新規作成する。
トランザクションを開始する。
EntityManagerを新規作成する。
トランザクションを開始する。
MANDATORY 既存のトランザクションを使用。 NoTransactionExceptionをスローする。
NEVER TransactionActiveExceptionをスローする。 EntityManagerが無い場合は新規作成する。
トランザクションは開始しない。

導入されたバージョン:
0.9.1
作成者:
matu◆AliceLAklI.

入れ子のクラスの概要
static interface TransactionPropagator.Process
          トランザクション内で実行される処理を記述するクラスに実装するインターフェイスです。
 
フィールドの概要
protected  PersistenceContext pc
           
 
コンストラクタの概要
TransactionPropagator(TransactionAttributeType type)
           
 
メソッドの概要
 TransactionPropagator clone()
          プロトタイプインスタンスより複製を作成するメソッドです。
protected abstract  void closeProcess()
          EntityManager.close()の呼び出しなどを実行します。
protected abstract  void commitProcess()
          TransactionPropagator.Process.execute(EntityManager)を呼び出し後に、トランザクションをコミットする際に呼ばれます
protected  void exceptionProcess(Throwable t)
          例外発生時のコミット/ロールバック処理を行います。
static TransactionPropagator getTransactionPropagator(TransactionAttributeType type)
          TransactionAttributeTypeに応じたTransactionPropagatorインスタンスを取得します。
protected abstract  void prepare()
          TransactionPropagator.Process.execute(EntityManager)を呼び出す前の、トランザクション開始などの事前処理を行います。
 Object propagate(TransactionPropagator.Process process)
          トランザクション処理を行い、Process#execute()を実行します。
protected abstract  void rollbackProcess()
          TransactionPropagator.Process.execute(EntityManager)を呼び出し後に、トランザクションをロールバックする際に呼ばれます
 void setPersistenceContext(PersistenceContext pc)
           
 void setRollbackFor(Class<? extends Throwable>[] rollbackFor)
          トランザクションをロールバックする例外タイプをセットします。
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

pc

protected PersistenceContext pc
コンストラクタの詳細

TransactionPropagator

public TransactionPropagator(TransactionAttributeType type)
メソッドの詳細

setPersistenceContext

public void setPersistenceContext(PersistenceContext pc)

getTransactionPropagator

public static TransactionPropagator getTransactionPropagator(TransactionAttributeType type)
TransactionAttributeTypeに応じたTransactionPropagatorインスタンスを取得します。


propagate

public Object propagate(TransactionPropagator.Process process)
                 throws Throwable
トランザクション処理を行い、Process#execute()を実行します。

例外:
Throwable

setRollbackFor

public void setRollbackFor(Class<? extends Throwable>[] rollbackFor)
トランザクションをロールバックする例外タイプをセットします。
例外タイプは@Transactional.rollbackFor()属性で指定した例外タイプです。


clone

public TransactionPropagator clone()
プロトタイプインスタンスより複製を作成するメソッドです。

オーバーライド:
クラス Object 内の clone

exceptionProcess

protected void exceptionProcess(Throwable t)
                         throws Throwable
例外発生時のコミット/ロールバック処理を行います。

例外:
Throwable

prepare

protected abstract void prepare()
TransactionPropagator.Process.execute(EntityManager)を呼び出す前の、トランザクション開始などの事前処理を行います。


commitProcess

protected abstract void commitProcess()
TransactionPropagator.Process.execute(EntityManager)を呼び出し後に、トランザクションをコミットする際に呼ばれます


rollbackProcess

protected abstract void rollbackProcess()
TransactionPropagator.Process.execute(EntityManager)を呼び出し後に、トランザクションをロールバックする際に呼ばれます


closeProcess

protected abstract void closeProcess()
EntityManager.close()の呼び出しなどを実行します。



Copyright © 2007. All Rights Reserved.