====== Transaction 서비스 ======
===== 개요 =====
트랜잭션 서비스는 Spring 트랜잭션 서비스를 채택하여 가이드한다. 트랜잭션 서비스에는 여러가지가 있지만 여기서는 **DataSource Transaction Service**, **JTA Transaction Service**, **JPA Transaction Service**에 대해서 설명하고 트랜잭션 활용에 대해서는 설정 및 Annotation을 통해서 활용할 수 있는 **Declaration Transaction Management**와 프로그램에서 직접 API를 호출하여 쓸 수 있도록 하는 **Programmatic Transaction Management** 두가지에 대해서 설명한다.
* [[.:transaction:Declarative Transaction Management]]
* [[.:transaction:Programmatic Transaction Management]]
===== 설명 =====
==== DataSource Transaction Service ====
DataSource를 사용하여 Local Transaction을 관리할 수 있다. 아래에서 예를 들어서 설정 방법과 사용법을 설명한다.
=== Configuration ===
^ PROPERTIES ^ 설 명 ^
|driverClassName| jdbc driver |
|url| db url |
|username|사용자명 |
|password|패스워드 |
|defaultAutoCommit| 자동commit 설정|
위의 설정을 보면 transactionManager의 property로 dataSource를 지정하고 그에 필요한 driver정보,Url정보등을 지정한 것을 확인 할 수 있다. 설정한 dataSource 기반하에서 트랜잭션 서비스를 제공한다. 사이트 환경에 맞추어 driverClassName,url,username,password는 변경해서 적용한다.
=== Sample Source ===
@Resource(name="transactionManager")
PlatformTransactionManager transactionManager;
...
TransactionStatus txStatus = transactionManager.getTransaction(txDefinition);
위의 예와 같이 transactionManager을 활용할 수 있다.
==== JTA Transaction Service ====
JTA를 이용하여 Global Transation관리를 할 수 있도록 지원하는 것으로 아래에서 예를 들어서 설정 방법을 설명한다. 사용법은 DataSource Transaction Service와 동일하다.
=== Configuration ===
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://was:7002
위의 설정예에서 jndi-name 과 java.naming.factory.initial,java.naming.provider.url은 사이트 환경에 맞추어 변경해야 한다. DataSource Transaction Service와는 달리 transationManager에 대해서 따로 bean 정의하지 않아도 된다.
==== JPA Transaction Service ====
JPA Transaction 서비스는 JPA EntityManagerFactory를 이용하여 트랜잭션을 관리한다. JpaTransactionManager는 EntityManagerFactory에 의존성을 가지고 있으므로 반드시 EntityManagerFactory 설정과 함께 정의되어야 한다. 아래에서 예를 들어서 설정 방법을 설명한다. 사용법은 DataSource Transaction Service와 동일하다.
=== Configuration ===
^ PROPERTIES ^ 설 명 ^
|driverClassName| jdbc driver |
|url| db url |
|username|사용자명 |
|password|패스워드 |
|defaultAutoCommit| 자동commit 설정|
|persistenceUnitName| persistenceUnitName |
|persistenceXmlLocation| XML 위치 |
|dataSource| 데이타소스 |
위의 설정을 보면 transactionManager의 property로 entiyManagerFactory로 지정하고 entityManagerFactory의 property로 dataSource를 지정하고 그에 필요한 driver정보,Url정보등을 지정한 것을 확인 할 수 있다. 설정한 dataSource 기반하에서 트랜잭션 서비스를 제공한다. 사이트 환경에 맞추어 driverClassName,url,username,password는 변경해서 적용한다. 또한 persistenceUnitName과 persistenceXmlLocation 정보를 지정하는 것을 알수 있다.
===== 참고자료 =====