[querydsl] 수정, 삭제 배치 쿼리 사용 시 주의할 점

2024. 2. 15. 18:25·Backend/JPA

주의해야할 점

bulk연산을 수행하면, db와 영속성 컨텍스트의 값이 서로 다르다.

 

 

쿼리 수행 전

member1 = 10 → DB member1

member2 = 20 → DB member2

member3 = 30 → DB member3

member4 = 40 → DB member4

long execute = queryFactory
                .update(member)
                .set(member.username, "비회원")
                .where(member.age.lt(28))
                .execute();

쿼리 수행 후

member1 = 10 → DB 비회원

member2 = 20 → DB 비회원

member3 = 30 → DB member3

member4 = 40 → DB member4

 

queryFactory
.selectFrom(member)
.fetch();

DB에서 member 테이블의 값을 조회할 때, 해당 데이터가 영속성 컨텍스트에 이미 존재한다면, DB의 값은 영속성 컨텍스트의 값과 교체되지 않는다. 즉, DB보다 영속성 컨텍스트가 높은 우선권을 가진다. → 영속성 컨텍스트 데이터 유지

 

 

해결책

벌크 연산 이후에 아래 코드를 꼭 실행할 것.

em.flush();
em.clear();
'Backend/JPA' 카테고리의 다른 글
  • [querydsl] @queryProjection vs Projections.constructor
kimdozzi
kimdozzi
끝까지 포기하지 않으면, 내가 다 이겨!
  • kimdozzi
    도브로
    kimdozzi
  • 전체
    오늘
    어제
    • 분류 전체보기 (132)
      • Problem Solving (49)
        • Baekjoon (29)
        • Programmers (0)
        • LeetCode (17)
        • 삼성 유형 (2)
      • Computer Science (27)
        • Operating System (2)
        • Algorithms (13)
        • Network (6)
        • DataBase (6)
      • Backend (33)
        • JavaScript (0)
        • TypeScript (6)
        • Java (7)
        • Spring Boot (7)
        • Spring Security (6)
        • JPA (2)
        • Mybatis (1)
        • Junit5 (1)
        • Redis (3)
      • DevOps (14)
        • Git, Github (5)
        • docker (4)
        • AWS (3)
        • nginx (2)
      • etc (6)
        • IntelliJ (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 티스토리
    • 설정
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    구간합
    segment tree
    파이썬
    백준
    티스토리챌린지
    imos법
    TypeScript
    CORS
    오프라인 쿼리
    인터페이스
    python
    docker
    구간 업데이트
    PrefixSum
    docker image
    AWS
    인덱서블 타입
    점 업데이트
    삼성기출
    도커
    interface
    세그먼트 트리
    S3
    인덱스 시그니처
    오블완
    Bucket
    컨테이너
    누적합
    온라인 쿼리
    알고리즘
    타입스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kimdozzi
[querydsl] 수정, 삭제 배치 쿼리 사용 시 주의할 점
상단으로

티스토리툴바