엄지월드

트랜잭션 매니저 본문

Server&DevOps/Database

트랜잭션 매니저

킨글 2024. 4. 22. 20:53
반응형

 

  • private final PlatformTransactionManager transactionManager
    • PlatformTransactionManager를 통해 트랜잭션 매니저를 주입 받는다. 지금은 JDBC 기술을 사용하기 때문에 `DataSourceTransactionManager` 구현체를 주입 받아야 한다.
    • 물론 JPA 같은 기술로 변경되면 `JpaTransactionManager`를 주입 받으면 된다. 
  • transactionManager.getTransaction()
    • 트랜잭션을 시작한다.
    • `TransactionStatus status`를 반환한다. 현재 트랜잭션의 상태 정보가 포함되어 있다. 이후 트랜잭션을 커밋, 롤백할 때 필요하다.
  • new DefaultTransactionDefinition()
    • 트랜잭션과 관련된 옵션을 지정할 수 있다.
  • transactionManager.commit(status)
    • 트랜잭션 성공하면 이 로직을 호출해서 커밋
  • transactionManager.rollback(status)
    • 트랜잭션이 실패하면 이 로직을 호출해서 롤백.

해당 코드를 실행시켜 보면 No Database Set 오류가 나게 된다. 

이유는 DataSourceTransactionManager에서 dataSource를 주입하지 않았기 때문이다.

트랜잭션 매니저에서 트랜잭션을 만들어서 트랜잭션 동기화 매니저에 보관해야 하는데, 데이터 소스가 없기 때문에 트랜잭션을 못만들기 때문이다.

Comments