[스프링3트랜잭션강좌]Spring transaction,PlatformTransactionManager, 스프링프로그래밍적트랜잭션(TransactionManager사용),spring framework3.X transaction, 스프링프레임워크교육강좌학원, 실무스프링교육
스프링 트랜잭션 매니저는 getTransaction()을 호출해서 새로운 트랜잭션을 시작하거나 현재 활성화된 트랜잭션을 얻을 수 있으며 commit(), rolllback() 메소드로 트랜잭션을 관리할 수 있게 하는 특정 기술에 비종속적인 방법을 제공한다.
PlatformTransactionManager는 트랜잭션 관리를 위한 추상화 단위이므로 트랜잭션 관리 메소드는 항상 특정 기술과는 독립적으로 사용할 수 있다.
1. 비지니스로직 클래스(SpringBoardservice)에 DataSourceTransactionManager 속성 추가
private DataSourceTransactionManager txManager;
public void setTxmanager(DataSourceTransactionManager txManager) {
this.txManager = txManager;
}
public void setTxmanager(DataSourceTransactionManager txManager) {
this.txManager = txManager;
}
2. 오라클 Transaction Manager DI(Dependency Injection)
<!-- Transaction manager for a single JDBC DataSource -->
<bean id="oracleTransactionManager class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref=“dataSource" />
</bean><bean id=“boardService" class=“onj.oraclejava.SpringBoardservice">
<property name="txManager" ref="oracleTransactionManager" />
</bean>
<bean id="oracleTransactionManager class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref=“dataSource" />
</bean><bean id=“boardService" class=“onj.oraclejava.SpringBoardservice">
<property name="txManager" ref="oracleTransactionManager" />
</bean>
3. 비즈니스 로직 메소드
public void storeOption() {
TransactionDefinition def = new DefaultTransactionDefinition();
def.setName("oracleTransactionManager");
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = txManager.getTransaction(def);
try {
// TRAN1
// TRAN2
txManager.commit(status);
} catch (MyException ex) {
txManager.rollback(status);
// throw ex;
}
}
def.setName("oracleTransactionManager");
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = txManager.getTransaction(def);
try {
// TRAN1
// TRAN2
txManager.commit(status);
} catch (MyException ex) {
txManager.rollback(status);
// throw ex;
}
}
댓글 없음:
댓글 쓰기