• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@Modifying(flushAutomatically="true/false") 에 대한 질문

21.08.27 04:34 작성 조회수 272

1

안녕하세요! 좋은 강의 잘 듣고 있습니다.

해당 질문 게시판에 있는 @Modifying 의flushAutomatically 에 대한 질문에 대한 답을 보면서 추가로 궁금한 점이 생겨 질문을 남기게 되었습니다.

flushAutomatically은 디폴트 값이 false이며 이 값이 true로 의미있게 사용되는 경우는, 1)하이버네이트 옵션에서 JPQL 실행시 강제로 플러시가 되지 않도록 설정할때, flushAutomatically 설정값을 true로 만들경우, 자동으로 flush가 됨  

2)JPQL 실행시 모든 내용을 다 플러시 하는것이 아닌 해당 JPQL과 관련있는엔티티만을 플러시함 이때 clearAutomatically를 할경우, 데이터베이스에 JPQL과 관련이 없지만 변경된 데이터가 반영되지 않을 수 있음 

이때 flushAutomatically=true 를 사용함으로 이해를 했습니다. (영한님 답변을 통한이해)

flushAutomatically =false / true 값에 따른 차이를 눈으로 확인해보고 싶어 테스트 하던중 궁금한 점이 생겼습니다.

2)에 대한 궁금한 점인데요, 

Member 엔티티와 전혀 관련없는 Pra라는 엔티티를 만들고,

해당 엔티티에서 사용할, Repository또한 만들었습니다.

그리고 

멤버 엔티티에 대한 벌크성 쿼리를 test할 경우 

위의 PraRepository.save()에 대한 쿼리가 memberRepository.bulkAgePlus() 해당 부분 문장을 실행할때 DB에 반영되지 않고 영속성컨텍스트에만 남아 있을것이라 예상했습니다. (왜냐 멤버관련 벌크성 쿼리와 관련없는 것이기 때문)

하지만 Pra 에 관한 insert query가 발생한 것을 보았습니다.JPQL과 관련없는 엔티티인데, Member 관련 벌크성 쿼리시 다른 엔티티인 Pra 관한 내용 또한 DB에 반영되는 이유가 궁금합니다...!  

답변 1

답변을 작성해보세요.

1

안녕하세요. jsungmin6

좀 살펴보아야 할 것 같아요.

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

주의: 업로드시 권한 문제 꼭 확인해주세요

추가로 다음 내용도 코멘트 부탁드립니다.

1. 실행 방법을 알려주세요.

2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.

dohun10170님의 프로필

dohun10170

2022.07.14

안녕하세요. 좋은 강의 감사합니다.

 

강의를 듣던 중 저의 궁금증과 jsungmin6님의 질문이 같아 댓글을 남깁니다.

해당 내용에 대한 답변 공유 부탁드립니다.

 

감사니다.