코드 테스트 시 데이터 입출력이 있는 경우, 매번 코드 실행 시 기존 입력했던 데이터를 삭제시켜 줘야 하는 번거로움이 있다.
=> 데이터 베이스에 기존에 입력한 값이 남아 있는 경우 에러가 나기 때문.
스프링 부트에서는 이런 상황을 쉽게 해결하기 위해 @Transactional 어노테이션을 제공한다.
테스트 클래스에 @Transactional을 사용하면,
테스트 실행시 Transactional이 실행되고,
데이터 입력을 포함한 모든 동작을 실행 시킨 뒤,
테스트가 끝날때 모든 작업을 rollback 시킨다.
때문에, 데이터 베이스에 해당 작업들이 commit 된 상태가 아니므로 데이터 베이스를 매번 clear 시켜 줄 필요가 없음!
** 테스트 클래스가 아닐때 @Transactional 어노테이션은,
데이터 관련된 작업시, All or Nothing 형식, 즉 데이터 원자성(Atomicity)을 지키기 위해 사용된다.
( 작업 실행중 에러 발생시 rollback, 제대로 실행된 경우에만 데이터베이스에 반영시킴 )
Builder pattern과 @Jacksonized (0) | 2023.05.07 |
---|---|
자바 Vo -> Entity 리스트 변환 : stream, map, collect & 람다식 (0) | 2023.04.10 |
[Spring boot] 테스트 케이스 작성하기 (0) | 2023.02.22 |
[Spring Boot] Entity와 Repository (0) | 2023.02.20 |
[Spring Boot] 웹개발 - 정적 컨텐츠, MVC + 템플릿 엔진, API (0) | 2023.02.19 |