강의

멘토링

로드맵

Inflearn Community Q&A

cocksong2613's profile image
cocksong2613

asked

Java ORM Standard JPA Programming - Basics

Eager loading and lazy loading

예제에서 em.flush(); em.clear();하는 특별한 이유가 있나요?

Written on

·

3.5K

0

Team 과 Member를 persist 한 뒤

em.flush();

em.clear(); 

를 하는 특별한 이유가 있나요?

javaJPA

Answer 2

8

yh님의 프로필 이미지
yh
Instructor

안녕하세요. 개발자님^^

persist()를 하고 em.find()를 바로 호출하면, 조회 쿼리를 볼 수 없습니다.

영속성 컨텍스트에 있는 데이터를 가지고 오기 때문이지요.

반면에 em.flush(), em.clear()를 하면 DB에 데이터를 반영하고, 영속성 컨텍스트를 지웁니다.

그러면 em.find()를 호출하면 영속성 컨텍스트에 없으니 db에서 조회하고, 조회 쿼리를 볼 수 있습니다.

실무에서는 em.flush(), em.clear()를 직접 호출하는 경우는 거의 없습니다.

강의에서는 단순히 설명을 편리하게 하기 위해 이런 방식을 선택했습니다.

감사합니다.

혹시 보실지는 모르겠지만 실무에서 em.flush(), em.clear()를 직접 호출하지 않는 이유가 있나요? ㅠㅠ

yh님의 프로필 이미지
yh
Instructor

안녕하세요. hongpiglet1995님

조금 더 공부를 해보시면 아시겠지만, 트랜잭션을 커밋할 때 자동으로 플러시가 발생합니다^^

그리고 트랜잭션의 범위를 넘어서게 되면 자동으로 영속성 컨텍스트가 종료됩니다.

따라서 이런 부분을 수동으로 하는 일은 거의 없습니다.

감사합니다.

4

cocksong2613님의 프로필 이미지
cocksong2613
Questioner

답변 감사합니다.  이해하는데 많은 도움이 됬습니다.

cocksong2613's profile image
cocksong2613

asked

Ask a question