졸업 작품의 간단한 초기 기능들을 작성하고, 제대로 동작하는지 테스트 코드를 작성해 결과를 확인하던 중이였다.
내가 작성한 테스트에서는 Member와 Review 인스턴스를 생성 후 저장하고 조회하는 로직이 있는데,
저장을 위한 Insert 쿼리나 조회를 위한 Select 쿼리가 날라가지 않음을 결과창에서 볼 수 있다!
처음엔 ‘application.yml
설정을 잘못 했나? ’ 라는 생각이 들던 찰나, 그건 아니였다!
→ 왜냐면, 테스트가 아닌 애플리케이션을 실행한 뒤 API를 통해 보낸 요청에서는 모든 쿼리가 잘 날라갔기 때문!
두 가지를 간과했던 나
- 현재 테스트 코드를 작성 중이다.
@Transactional
어노테이션을 붙여 최종 실행 결과를 DB에 반영하지 않고 롤백 시켰다.- 또한 JPA는 쓰기 지연이라는 이점을 제공한다.
Rollback(false)
설정해주기flush()
메서드를 이용해 강제로 쓰기 지연 저장소를 비운다!JPA의 특징과 @Transactional
에 대해 다시 한번 복습할 필요가 있다!
뒷북치시네요. 잘봤습니다.