상세 컨텐츠

본문 제목

[Spring Boot] 테스트 클래스와 @Transactional 어노테이션

Programming/BackEnd

by Dal_pang 2023. 3. 5. 00:02

본문

코드 테스트 시 데이터 입출력이 있는 경우, 매번 코드 실행 시 기존 입력했던 데이터를 삭제시켜 줘야 하는 번거로움이 있다.

=> 데이터 베이스에 기존에 입력한 값이 남아 있는 경우 에러가 나기 때문.

 

스프링 부트에서는 이런 상황을 쉽게 해결하기 위해 @Transactional 어노테이션을 제공한다.

 

테스트 클래스에 @Transactional을 사용하면, 

테스트 실행시 Transactional이 실행되고,

데이터 입력을 포함한 모든 동작을 실행 시킨 뒤,

테스트가 끝날때 모든 작업을 rollback 시킨다.

 

때문에, 데이터 베이스에 해당 작업들이 commit 된 상태가 아니므로 데이터 베이스를 매번 clear 시켜 줄 필요가 없음!

 

** 테스트 클래스가 아닐때 @Transactional 어노테이션은,

데이터 관련된 작업시, All or Nothing 형식, 즉 데이터 원자성(Atomicity)을 지키기 위해 사용된다.

( 작업 실행중 에러 발생시 rollback, 제대로 실행된 경우에만 데이터베이스에 반영시킴 )

 

@Transactional을 사용한 테스트 클래스

728x90

관련글 더보기