강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

검은백조님의 프로필 이미지
검은백조

작성한 질문수

스프링 데이터 JPA

update 쿼리 관련 질문

작성

·

270

0

우선 자바 문외한 인데 강사님 강의 스프링 부트 부터 시작해서 jpa 까지 들으면서 공부하고 있습니다.

좋은 강의로 자바에 입문하게 도와주셔서 감사합니다.

스프링 데이터 JPA : Update 쿼리 메소드 강좌 중의 테스트 코드를

@DataJpaTest 로 하면 insert -> update -> select 쿼리가 실행 되면서 title  이 jpa -> Spring 으로 바뀌는 것이 확인 됩니다.

그런데 @SpringBootTest 로 하면 insert -> select 쿼리만 실행 되고 update 쿼리는 실행 되지 않아 테스트는 실패합니다.

테스트 어노테이션이 바뀌니까 다른 결과가 나오는지 잘 이해가 되지 않습니다.

findAll 이 실행 되기 전에 dirthchecking(?)  을 하면서 데이터를 맞춰주니까 update 쿼리가 실행 되어야 맞는것 같은데요..무슨 차이일까요?

@Test
public void updateTest() throws Exception {

Post post = new Post();
post.setTitle("jpa");
Post newPost = postRepository.save(post);
newPost.setTitle("Spring");

List<Post> posts = postRepository.findAll();
assertThat(posts.size()).isEqualTo(1);
assertThat(posts.get(0).getTitle()).isEqualTo("Spring");

}

답변 1

0

백기선님의 프로필 이미지
백기선
지식공유자

더티체킹은 트랜잭션이 있어야 가능한데, @SpringBootTest는 @Transational이 없고 @DataJpaTest에는 있어서 그런 차이가 생깁니다.

검은백조님의 프로필 이미지
검은백조

작성한 질문수

질문하기