inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! Querydsl

벌크연산 관련 질문드립니다

201

성실한 청어

작성한 질문수 1

0

안녕하세요 강사님. 강의 듣다가 의문점이 하나 있어서 질문드립니다.

bulk update 후 동일 트랜잭션 내에서 엔티티를 조회했을때 영속성 컨텍스트에 update 결과가 반영안되는것까진 확인했습니다.

그런데 bulk delete 후에 엔티티를 조회하면 delete 결과가 반영이 되어있더라고요. (27강 12분 25초 delete문을 날린 후 Member 조회시 1개가 나옵니다)

그 이유가 궁금합니다. 결국 벌크연산에서 update문만 조심하면 되는건가요?

querydsl JPA java

답변 2

0

김영한

안녕하세요. skaansxo1님

다음 코드를 주석을 보면서 돌려보시면 이해가 되실거에요.

    @Test
public void bulkDelete() {

long count = queryFactory
.delete(member)
.where(member.age.gt(20))
.execute();

assertThat(count).isEqualTo(2);

// em.flush();
// em.clear();

List<Member> result = queryFactory
.selectFrom(member)
.fetch();

assertThat(result.size()).isEqualTo(2); //4개를 기대했는데 2개만 조회
//JPQL을 사용하면 SQL을 실행해서 DB에 있는 데이터를 기준으로 조회
for (Member member1 : result) {
System.out.println("member1 = " + member1);
}

//하지만 회원 3,4는 영속성 컨텍스트에 아직 남아있음(위험함)
//em.find()로 조회하면 영속성 컨텍스트를 먼저 찾음
//따라서 delete 벌크 연산 후 em.clear()로 영속성 컨텍스트를 초기화 하는 것이 안전함
Member member3 = em.find(Member.class, member3Id);
assertThat(member3).isNotNull();

Member member4 = em.find(Member.class, member4Id);
assertThat(member4).isNotNull();

}

감사합니다.

0

김영한

안녕하세요. skaansxo1님

뭔가 좀 이상하네요. 코드를 봐야할 것 같아요.

전체 프로젝트를 압축해서 올려주세요.

감사합니다.

 

join에대해 질문드립니다.

0

11

1

SpringBoot 4.X에서의 Querydsl 설정

0

158

2

querydsl 오픈소스에 대한 질문

1

102

1

예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?

0

127

1

Querydsl 6.X버전에 대해서 어떻게 생각하시나요?

0

349

2

여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요

1

86

1

fetchResults()는 더이상 권장되지 않는다는데 맞나요?

0

172

1

querydsl sum() 메서드 없어요.

0

169

2

build 디렉터리 생성

0

152

2

자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?

0

123

2

현재 Querydsl에서 from절 서브쿼리를 지원하나요?

0

99

1

오타 제보 드립니다.

0

79

2

벌크 연산과 flush, clear

0

85

1

Run As Intellij 로 변경시 Q타입 import 불가

0

95

1

QHello import하기 문제 발생

0

157

2

등록된 함수 보는법(H2Dialect) 질문

0

76

2

5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의

1

209

2

[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??

1

213

1

querydsl 설정 문제

0

228

2

quey dsl 설정부분

0

168

2

count 쿼리 관련 질문입니다!

0

79

1

stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.

0

98

1

답변부탁드리겠습니다.

0

95

2

(OrderSpecifier)관련 내용 어디있을가요

0

68

1