• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

em.flush, em.clear에 관한 질문입니다

22.01.02 14:15 작성 조회수 373

1

강의에서 영속성 컨텍스트에 있는 데이터를 데이터베이스에 보내기 위해 flush하고

그리고 영속성 컨텍스트를 비우기 위해 clear한 후

em.find하여 영속성 컨텍스트가 비워졌으니 데이터베이스에서 값을 가져오는 것은 이해했습니다.

 

제가 알기로는 em.find가 영속성 컨텍스트에서 찾아보고 없으면 데이터베이스에서 데이터를 가져오는데

그러면 clear하지 않고 영속성 컨텍스트에서 자료 찾아오는 것과 무슨 차이가 있는지 모르겠습니다...

영속성 컨텍스트에도 같은 자료가 있으니 굳이 clear할 필요가 있나 생각이 듭니다.

답변 부탁드립니다.

답변 1

답변을 작성해보세요.

0

codesweaver님의 프로필

codesweaver

2022.01.02

안녕하세요, 신동아 님. 공식 서포터즈 codesweaver 입니다.
.
강의에서 EntityManager가 영속성 컨텍스트를 처리하는 방법에 대한 예를 들기 위해

일부러 clear 이후 다시 find 하는 상황을 보여드린것입니다.

혹시, 질문의 요지가 다를경우 답글로 추가 질문을 남겨주시기 바랍니다.
.
감사합니다.

신동아님의 프로필

신동아

질문자

2022.01.03

질문의 요지가 다릅니다.

제 뜻은 clear 안하더라도 1차캐시에서 데이터를 불러올 수있는데 굳이 clear를 하는 이유를 몰라서 물어봅니다. 

안녕하세요. 신동아님

생각하신 내용이 맞습니다.

clear()를 하는 이유는 select 쿼리를 통해서 DB에 데이터가 확실히 들어있는지 눈으로 확인하기 위해서 이렇게 진행했습니다. (학습의 이유 때문이지요)

감사합니다.

신동아님의 프로필

신동아

질문자

2022.01.15

답변감사합니다~