송민준의 개발노트

JPA test case 작성 시 DML 쿼리가 안뜨는 현상 본문

웹/JPA

JPA test case 작성 시 DML 쿼리가 안뜨는 현상

송민준 2020. 12. 23. 23:40

JPA로 테스트케이스를 작성하다가 로그를 보고싶어서

application.yml 에 아래 속성을 추가해줬다.

logging:
  level:
    org.hibernate.type: trace

 

그리고 테스트를 돌려봤는데 성공했으나 

위처럼 뭐 나오는게 없다 쿼리가

 

혹시나 트랜잭션이 기본 롤백이라서 안뜨는게 아닐까 느낌이 들어 Rollback(false)를 추가해봤다.

@RunWith(SpringRunner.class)
@SpringBootTest
@Rollback(false)
public class MemberRepositoryTest {
    @Autowired
    .....

그랬더니

위와 같이 정상적으로 되는 것을 볼 수 있다.

 

persist 를 하면 insert가 바로 안나간다.

데이타베이스 트랜잭션 커밋이 될 때 그때 flush가 동작하는데, 이때 쓰기 지연 저장소에 쌓아 놨던 INSERT, UPDATE, DELETE SQL들이 DB에 날라간다.

(여기서 flush는 영속성 컨텍스트의 변경 내용을 DB에 반영하는 것을 말함)

 

그런데 Rollack(true)가 되어 commit이 되니 insert가 안나가는 것이다.

 

 

그래도 혹시나 보고싶다!!? 그러면 아래처럼 flush를 실행하면 나온다.

@Autowired
EntityManager em;

메소드() {
	레포지토리 실행하고~
    em.flush();
}

 

' > JPA' 카테고리의 다른 글

JPA 연관관계 총정리  (0) 2021.02.28
JPA Mapping Annotations  (0) 2021.01.30
JPA 데이터베이스 스키마 자동 생성법  (0) 2021.01.25
JPA @Entity  (0) 2021.01.24
영속성 컨텍스트란 무엇인가??  (0) 2021.01.18