트랜잭션 지원 및 Spring Framework
Spring Framework 버전 2.5 이상의 경우 선언 트랜잭션 모델을 사용하거나, AspectJ 프로그래밍 확장자에 대한 Spring Framework 지원을 사용하거나 어노테이션 기반 트랜잭션 지원을 사용할 수 있습니다. 버전 2.5 이전의 Spring Framework 버전 및 UOWManager 인터페이스를 제공하지 않는 애플리케이션 서버의 버전의 경우 트랜잭션 속성의 제한된 설정을 지원하는 Spring Framework 구성을 사용할 수 있습니다.
선언 트랜잭션 모델
WebSphere® Application Server 버전 6.0.2.19 이상 및 버전 6.1.0.9 이상은 트랜잭션 제어 하에서 자원 업데이트를 구동하기 위해 Spring Framework 선언 트랜잭션 모델을 지원합니다. Spring Framework 2.5의 WebSphereUowTransactionManager 클래스는 애플리케이션 서버에서 트랜잭션 컨텍스트를 관리하기 위해 UOWManager 인터페이스를 사용합니다. 트랜잭션 경계 설정은 UOWManager 인터페이스를 통해 관리되므로 적합한 글로벌 트랜잭션 또는 로컬 트랜잭션 포함(LTC) 컨텍스트는 자원 제공자에 액세스하면 항상 사용 가능합니다. UOWManager 인터페이스 및 JTA(Java™ Transaction API) 지원에 대한 자세한 정보는 관련 주제를 참조하십시오.
- 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 플랫폼, Standard Edition 5(Java SE 5) 이상이 필요합니다. 그러므로 이 메소드를 WebSphere Application Server 버전 6.1 이상에서 사용할 수 있습니다.
<tx:annotation-driven/>
@Transactional(readOnly = true)
public String getUserName()
{ ...
}
@Transactional 어노테이션을 사용하면 공용 메소드에만 어노테이션을 추가할 수 있습니다.
Spring Framework 버전 2.5 이전에서의 트랜잭션 지원
트랜잭션 속성의 제한된 설정을 지원하는 Spring Framework 구성을 사용할 수 있습니다.
이 트랜잭션 지원 메소드를 WebSphereUowTransactionManager 클래스를 제공하지 않는 Spring Framework 버전 2.5 이전의 버전에서 사용할 수 있습니다. 또한 UOWManager 인터페이스를 제공하지 않는 WebSphere Application Server 버전 6.0.2.19 및 버전 6.1.0.9 이전에서 이 트랜잭션 지원 메소드를 사용할 수도 있습니다.
- 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의 사용을 지원하지 않습니다.