트랜잭션 지원 및 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) 지원에 대한 자세한 정보는 관련 주제를 참조하십시오.

WebSphereUowTransactionManager 클래스는 다음 Spring Framework 트랜잭션 속성을 지원합니다.
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NOT_SUPPORTED
  • PROPAGATION_NEVER
WebSphere Application Server 트랜잭션 지원에 다음 선언을 사용하십시오.
<bean id="transactionManager"
   class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
그러면 이전 선언을 참조하는 Spring Bean은 Spring Framework 종속 항목 인젝션을 사용하여 트랜잭션 지원을 사용할 수 있습니다. 예제:
<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 프로그래밍 확장자

AspectJ 프로그래밍 확장자에 대해 Spring Framework 지원을 사용할 수 있습니다. 다음 예제 코드는 다음 트랜잭션 동작과 함께 <tx:advice/> 요소를 선언합니다.
  • 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>
그러면 pointcut을 선언하여 이 설정을 필수 조작에 적용할 수 있습니다. 이 설정을 애플리케이션의 다양한 파트에 적용할 수 있습니다. 다음 예제 코드는 MyService 클래스에 정의된 모든 조작에 설정을 적용합니다.
<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 이상에서 사용할 수 있습니다.

다음 행을 Spring.xml 구성에 추가하십시오.
<tx:annotation-driven/>
트랜잭션 속성을 필요로 하는 모든 메소드에 @Transactional 어노테이션으로 표시하십시오. 예를 들면,
@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 이전에서 이 트랜잭션 지원 메소드를 사용할 수도 있습니다.

구성은 다음 Spring Framework 트랜잭션 속성을 지원합니다.
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_NEVER
다음 Spring Framework 구성을 사용하십시오.
<bean id="transactionManager" 
              class="org.springframework.transaction.jta.JtaTransactionManager">
  <property name="autodetectTransactionManager"value="false" />
</bean>
구성은 다음 Spring Framework 트랜잭션 속성을 지원하지 않습니다.
  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NOT_SUPPORTED

WebSphere Application Server는 Spring Framework 클래스 org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean의 사용을 지원하지 않습니다.


주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cspr_data_access_tran1
파일 이름:cspr_data_access_tran1.html