
트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적인 기능이다, 예를 들면 update를 한 후 delete를 하는 행위를 하나의 트랜잭션이라고 표현한다.
기술적으로 접근하면 트랜잭션은 데이터베이스의 connection을 가져와 DB connection을 시작한 시점부터 트랜잭션의 시작이다. 그리고 DB작업을 마치고 commit혹은 rollback을 호출할 때 까지가 하나의 트랜잭션으로 묶인다.
spring에서 제공하는 @Transactional 이라는 어노테이션이 있는데 원래라면 트랜잭션을 사용하도록 JDBC 커넥션 객체를 생성하거나 transactionManager를 선언하여 트랜잭션 범위를 지정해주는 것이 일반적이다.
TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
하지만 @Transactional 어노테이션을 사용하면 직접 객체를 만들 필요 없이 선언만 해주면 해당 범위 내 메서드가 트랜젝션이 되도록 보장해준다.
https://mangkyu.tistory.com/269