Spring Framework 2024. 8. 16. 12:21

[JPA] deleteBy는 N개의 DELETE 쿼리로 실행된다

목차
  1. 정리
  2. 해결법
  3. 출처

정리

  • JPA의 메소드 deleteBy는 삭제되는 엔티티 개수만큼의 DELETE 문으로 실행횐다
    • 이는 성능 저하의 원인이 될 수 있다
    • SELECT로 조건에 맞는 엔티티를 조회하고, id 조건으로 하나씩 삭제한다

해결법

  • @Query로 직접 JPQL 쿼리를 생성한다
    • 지금 프로젝트에서는 더 편하게 QueryDsl custom repository를 사용했다
@Repository
@RequiredArgsConstructor
public class HabitAlertRepositoryCustomImpl implements HabitAlertRepositoryCustom {
    private final JPAQueryFactory queryFactory;

    @Override
    public void deleteByRunHabitId(Integer runHabitId) {
        QHabitAlert habitAlert = QHabitAlert.habitAlert;

        queryFactory.delete(habitAlert)
                .where(habitAlert.runHabit.runHabitId.eq(runHabitId))
                .execute();
    }
}
  • deleteInBatch를 사용해서 해결할 수 있다고는 하나, 직접 테스트했을 때는 원하는 대로 동작하지 않아서 확실하지 않음
    • CASCADE 조건 때문일 수도 있다

출처

https://jojoldu.tistory.com/235

 

JPA에서 대량의 데이터를 삭제할때 주의해야할 점

안녕하세요? 이번 시간엔 JPA에서 대량의 데이터를 삭제할때 주의해야할 점을 샘플예제로 소개드리려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (

jojoldu.tistory.com

 

저작자표시 (새창열림)

'Spring Framework' 카테고리의 다른 글

[Spring] Spring Web이 Request Parameter를 바인딩하는 과정, 내부 구현 분석하기 - 생성자, getter, setter  (0) 2024.08.19
[Spring][스크랩] Request Param의 타입으로 enum을 지정하는 법  (0) 2024.08.18
[MapStruct] 필드 매핑할 때 다른 Mapper 클래스의 메소드 사용하는 법 - uses, @Named  (0) 2024.08.07
[Spring][스크랩] nested transaction의 동작 방식  (0) 2024.08.02
[Spring] FK(id)만 이용해서 관계 있는 엔티티를 생성하는 법 - 프록시 객체  (0) 2024.07.12
  1. 정리
  2. 해결법
  3. 출처
'Spring Framework' 카테고리의 다른 글
  • [Spring] Spring Web이 Request Parameter를 바인딩하는 과정, 내부 구현 분석하기 - 생성자, getter, setter
  • [Spring][스크랩] Request Param의 타입으로 enum을 지정하는 법
  • [MapStruct] 필드 매핑할 때 다른 Mapper 클래스의 메소드 사용하는 법 - uses, @Named
  • [Spring][스크랩] nested transaction의 동작 방식
개발자 이우진
이우진 기술 블로그
  • All (86)
    • Spring Framework (20)
    • MSA (7)
      • Event Driven Architecture (3)
    • Java (3)
    • Flink (2)
    • Computer Science (9)
      • Object Oriented Programming (3)
    • Problem Solving (15)
    • Design Pattern (0)
    • React (4)
    • Javascript (2)
    • Web (3)
    • Tools & Environment (3)
    • C++ (2)
    • misc (5)
    • Essay (3)
      • 기술 회고 (5)
  • 홈
  • 태그
  • 관리자
  • 글쓰기
hELLO · Designed By 정상우.v4.2.2
[JPA] deleteBy는 N개의 DELETE 쿼리로 실행된다
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.