@Transactional을 클래스나 메서드에 붙여줄 경우, 해당 범위 내의 메서드가 트랜잭션이 되도록 보장해준다. 이는 선언적 트랜잭션이라고 하는데, 직접 객체를 만들 필요없이 선언만으로 관리를 용이하게 해준다.
메서드에 사용 시, 연산이 고립되어 다른 연산과의 혼선으로 인해 잘못된 값을 가져오는 경우를 방지할 수 있다.
또한 연산의 원자성이 보장되어 연산이 도중에 실패할 경우 변경사항이 commit되지 않는다.
| 정리
이를 통해 해당 메서드를 실행하는 도중 메서드 값을 수정/삭제하려는 시도가 발생할 시 해당 데이터 값의 신뢰성이 보장되며, 연산 도중 오류가 발생해도 rollback하여 DB에 해당 결과가 반영되지 않도록 할 수 있다.