JPA
JPA - @Transactional 이란?
🌱 오늘의 주제 : @Transactional 이란?
🌱 @Transactional 이란?
- 데이터베이스를 다룰 때 트랜잭션을 적용하면 데이터 추가, 갱신, 삭제 등으로 이루어진 작업을 처리하던 중 오류가 발생했을 때 모든 작업들을 원상태로 되돌릴 수 있다. 모든 작업들이 성공해야만 최종적으로 데이터베이스에 반영하도록 한다.
🌱 스프링에서 @Transactional 을 이용하여 트랜잭션 처리를 하는 방법
- DB와 관련된, 트랜잭션이 필요한 서비스 클래스 혹은 메서드에 @Transactional 어노테이션을 달아주면된다.
- 클래스, 메서드 모두에 @Transactional 어노테이션을 붙이면 메서드 레벨의 @Transactional 선언이 우선 적용된다.
- @Transactional이 붙은 메서드는 메서드가 포함하고 있는 작업 중에 하나라도 실패할 경우 전체 작업을 취소한다.
- 일련의 작업들을 묶어서 하나의 단위로 처리하고 싶다면 @Transactional을 활용
🌱 테스트 환경에서의 @Transactional 동작
- 테스트 메서드에 @Transactional을 사용하면 트랜잭션으로 감싸지며, 메서드가 종료될 때 자동으로 롤백된다.