22년 12월 작성한 글입니다.
@Transactional
어노테이션을 통해 트랜잭션을 처리합니다.TransactionTemplate
에 대해 알아봅니다.TransactionTemplate
는 JdbcTemplate
, RestTemplate
, KafkaTemplate
과 같이 트랜잭션 기능을 제공하는 템플릿 클래스 입니다.@Transactional
를 사용하지 않는 경우 TransactionTemplate
를 사용하여 트랜잭션을 적용할 수 있습니다.TransactionTemplate
은 PlatformTransactionManager
를 사용하여 트랜잭션을 처리합니다.execute
메서드의 내부 구현을 확인시, PlatformTransactionManager
를 통해 트랜잭션의 획득, 커밋 그리고 롤백을 수행합니다.public <T> T execute(TransactionCallback<T> action) throws TransactionException {
...
// 트랜잭션 획득
TransactionStatus status = this.transactionManager.getTransaction(this);
T result;
try {
// 로직 수행
result = action.doInTransaction(status);
}
catch (RuntimeException | Error ex) {
// 롤백
rollbackOnException(status, ex);
throw ex;
}
...
// 커밋
this.transactionManager.commit(status);
return result;
}
@Transactional
를 사용하지 않는 경우, TransactionTemplate
을 통해 트랜잭션을 처리할수 있습니다.