인프런 커뮤니티 질문&답변
왜 Test에 transactional을 또 붙여야하나요?
작성
·
1.1K
2
service에 이미 @Transactional을 붙어있는걸로 보이는데 왜 test코드에 또 Transactional을 붙여줘야 하는건가요?
어차피 Service에서 데이터 추가 , 삭제는 다 이루어지고 있는것 아닌가요?
퀴즈
71%나 틀려요. 한번 도전해보세요!
JPA에서 SQL과 JPQL 쿼리의 주요 차이점은 무엇인가요?
성능 최적화 방식
데이터 타입 지원 범위
테이블 기반 vs 엔티티 객체 기반
파라미터 바인딩 방식
답변 2
3
김영한
지식공유자
안녕하세요. 양태웅님
테스트는 여러번 수행해야 하는데, 기존 데이터가 계속 누적되면 다음 테스트에 영향을 줄 수 있습니다. 따라서 테스트 이후에 저장된 데이터를 모두 삭제해야 합니다.
이런 문제를 해결하기 위해 테스트에서 @Transactional을 붙여주게 되면 특별하게 데이터베이스에 저장된 결과를 커밋하지 않고 롤백합니다. 그래서 테스트를 여러번 실행해도 동일한 상황에서 테스트를 할 수 있습니다.
감사합니다.
0






네 맞습니다^^
테스트에 transactional이 없으면 테스트에서 트랜잭션 자체를 실행하지 않습니다.
transactional + @Commit를 사용하셔도 됩니다.