• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

update 쿼리가 발생하는 이유

20.12.12 16:36 작성 조회수 118

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을 변경하는 이유가 궁금합니다. 

좋은 강의 정말 감사합니다 :) 

답변 1

답변을 작성해보세요.

1

좋은 질문입니다. 그 부분은 저도 아쉽게 생각하는 동작 방식인데 하이버네이트가 내부적으로 action 단위(insert, update, delete 등)로 캐싱하고 있기 때문에 그런거라서 어쩔 수가 없네요.