Transaction 처리
1. 트랜잭션 관리 클래스 생성
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDnlG8LeXm5pfmWRee0pFKc5Q7snceA9BzqbZpdYvfRnvPQPug2NLcFHdaA2XnjEeEvu33mk_HkvfLZSfZ-XawCHbERbqyXbVo4QdbTETXQIqUeI85QAlqF5RK826-YxpwNu4BuzBaAKRJ/s1600/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2018-09-20+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%258C%25E1%2585%25A5%25E1%2586%25AB+10.40.42.png)
2. MyBatisSupport.java 코드 생성
@Service("myBatisSupport")
public class MyBatisSupport {
@Autowired(required = true)
@Qualifier("sqlSession")
protected SqlSessionTemplate sqlSession;
@Autowired
ApplicationContext applicationContext;
public MyBatisTransactionManager getTransactionManager() {
return applicationContext.getBean(MyBatisTransactionManager.class);
}
}
@Service
@Scope("prototype")
public class MyBatisTransactionManager extends DefaultTransactionDefinition {
private static final long serialVersionUID = 1L;
@Autowired
PlatformTransactionManager transactionManager;
TransactionStatus status;
public void start() throws TransactionException {
status = transactionManager.getTransaction(this);
}
public void commit() throws TransactionException {
if (!status.isCompleted()) {
transactionManager.commit(status);
}
}
public void rollback() throws TransactionException {
if (!status.isCompleted()) {
transactionManager.rollback(status);
}
}
public void end() throws TransactionException {
rollback();
}
}
4. root-context.xml 에 아래 코드 삽입
5. Transaction 처리 코드
1. 트랜잭션 관리 클래스 생성
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDnlG8LeXm5pfmWRee0pFKc5Q7snceA9BzqbZpdYvfRnvPQPug2NLcFHdaA2XnjEeEvu33mk_HkvfLZSfZ-XawCHbERbqyXbVo4QdbTETXQIqUeI85QAlqF5RK826-YxpwNu4BuzBaAKRJ/s1600/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2018-09-20+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%258C%25E1%2585%25A5%25E1%2586%25AB+10.40.42.png)
2. MyBatisSupport.java 코드 생성
@Service("myBatisSupport")
public class MyBatisSupport {
@Autowired(required = true)
@Qualifier("sqlSession")
protected SqlSessionTemplate sqlSession;
@Autowired
ApplicationContext applicationContext;
public MyBatisTransactionManager getTransactionManager() {
return applicationContext.getBean(MyBatisTransactionManager.class);
}
}
3. MyBatisTransacrionManager.java 코드 생성
@Service
@Scope("prototype")
public class MyBatisTransactionManager extends DefaultTransactionDefinition {
private static final long serialVersionUID = 1L;
@Autowired
PlatformTransactionManager transactionManager;
TransactionStatus status;
public void start() throws TransactionException {
status = transactionManager.getTransaction(this);
}
public void commit() throws TransactionException {
if (!status.isCompleted()) {
transactionManager.commit(status);
}
}
public void rollback() throws TransactionException {
if (!status.isCompleted()) {
transactionManager.rollback(status);
}
}
public void end() throws TransactionException {
rollback();
}
}
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean class="com.fogs.myapp.common.mybatis.MyBatisTransactionManager" scope="prototype" />
5. Transaction 처리 코드
MyBatisTransactionManager transaction = getTransactionManager();
transaction.start();
try {
DB 처리문...
transaction.commit();
} catch (Exception e) {
transaction.rollback();
e.printStackTrace();
} finally {
transaction.end();
}
댓글
댓글 쓰기