Resolved
Written on
·
172
0
private Post savePost() {
Post post = new Post();
post.setTitle("Spring");
Post saved = postRepository.save(post);
return saved;
}
@Test
void updateTitle(){
Post spring = savePost();
spring.setTitle("hibernate");
List<Post> all = postRepository.findAll();
assertThat(all.get(0).getTitle()).isEqualTo("hibernate");
}
위 코드에서 insert 후에 update 가 일어나는 이유가 헷갈리네요. 한 트랜잭션 안이니 Post spring 은 managed 상태일테고. 그럼 title을 hibernate로 변경한 상태로 insert 쿼리를 수행해 DB와 싱크를 맞추고 select 쿼리를 날려도 되지않나요? 그런데 insert 하고 update 를 통해 title을 변경하는 이유가 궁금합니다.
좋은 강의 정말 감사합니다 :)
Answer 1
1
좋은 질문입니다. 그 부분은 저도 아쉽게 생각하는 동작 방식인데 하이버네이트가 내부적으로 action 단위(insert, update, delete 등)로 캐싱하고 있기 때문에 그런거라서 어쩔 수가 없네요.