トランザクション・サポートと Spring Framework
Spring Framework バージョン 2.5 以降の場合は、宣言トランザクション・モデルを使用するか、Spring Framework による AspectJ プログラミング拡張のサポートを使用するか、あるいはアノテーション・ベースのトランザクション・サポートを使用することができます。バージョン 2.5 よりも前の Spring Framework、および UOWManager インターフェースを提供していないアプリケーション・サーバー・バージョンの場合は、トランザクション属性の制限付きセットをサポートしている Spring Framework 構成を使用することができます。
宣言トランザクション・モデル
WebSphere® Application Server Version 6.0.2.19 以降およびバージョン 6.1.0.9 以降は、トランザクション制御の下でリソース更新を行うために、Spring Framework 宣言トランザクション・モデルをサポートしています。Spring Framework 2.5 の WebSphereUowTransactionManager クラスは、アプリケーション・サーバーの UOWManager のインターフェースを使用してトランザクション・コンテキストを管理します。トランザクション区分は UOWManager インターフェースによって管理されるため、リソース・プロバイダーにアクセスした場合は、常に適切なグローバル・トランザクションまたはローカル・トランザクション内包 (LTC) のコンテキストが使用されます。UOWManager インターフェースおよび Java™ Transaction API (JTA) サポートについて詳しくは、関連トピックを参照してください。
- PROPAGATION_REQUIRED
- PROPAGATION_SUPPORTS
- PROPAGATION_MANDATORY
- PROPAGATION_REQUIRES_NEW
- PROPAGATION_NOT_SUPPORTED
- PROPAGATION_NEVER
<bean id="transactionManager"
class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
<bean id="someBean" class="some.class">
<property name="transactionManager" >
<ref bean="transactionManager"/>
</property>
...
</bean>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
AspectJ プログラミング拡張
- get というストリングで始まるメソッドはすべて、トランザクション属性 PROPAGATION_REQUIRED を持っています。
- set というストリングで始まるメソッドはすべて、トランザクション属性 PROPAGATION_REQUIRES_NEW を持っています。
- その他のすべてのメソッドは、デフォルトのトランザクション設定を使用します。
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="set*" propagation="REQUIRES_NEW" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="myServiceOperation"
expression="execution(* sample.service.MyService.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="myServiceOperation"/>
</aop:config>
アノテーション・レベルのトランザクション・サポート
アノテーション・ベースのトランザクション・サポートを使用するには、Java Platform, Standard Edition 5 (Java SE 5) 以降が必要です。したがって、このメソッドは、WebSphere Application Server バージョン 6.1 以降で使用することができます。
<tx:annotation-driven/>
@Transactional(readOnly = true)
public String getUserName()
{ ...
}
@Transactional アノテーションを使用すると、パブリック・メソッドのみに注釈を付けることができます。
バージョン 2.5 よりも前の Spring Framework でのトランザクション・サポート
トランザクション属性の制限付きセットをサポートする Spring Framework 構成を使用できます。
WebSphereUowTransactionManager クラスを提供していない、バージョン 2.5 よりも前のバージョンの Spring Framework ではこのトランザクション・サポートの方法を使用できます。トランザクション・サポートのこの方法は、UOWManager インターフェースを提供していない、バージョン 6.0.2.19 およびバージョン 6.1.0.9 よりも前のバージョンの WebSphere Application Server にも使用できます。
- PROPAGATION_REQUIRED
- PROPAGATION_SUPPORTS
- PROPAGATION_MANDATORY
- PROPAGATION_NEVER
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="autodetectTransactionManager"value="false" />
</bean>
- PROPAGATION_REQUIRES_NEW
- PROPAGATION_NOT_SUPPORTED
WebSphere Application Server は、Spring Framework クラス org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean の使用をサポートしていません。