inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리스트를 한번에 업데이트 하고자 할 때 아래와 같은 방법 말고 다른 게 있을까요?

781

박민호

작성한 질문수 9

0

예를 들어 특정 회원을 전부 탈퇴시키고 싶을 때의 수도 코드입니다.

 

@Transactional

void 회원탈퇴메소드

List<회원> 회원리스트 = findByxxx();

 

for (회원 : 회원리스트) {

회원.set활성여부("탈퇴");

}

return;

 

이러면 이제 리턴 시점에 회원리스트 길이만큼 update 쿼리가 나가는 것을 봤는데요, 혹시 이거 말고 한꺼번에 업데이트 하는 방법이 있는지 궁금합니다. 아니면 그냥 이런 식으로 건별로 업데이트를 해야겠지요.

jpa dirtychecking list

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.
회원 탈퇴 시 리스트 한꺼번에 업데이트하는 방법이 궁금하신 것 같아요.

일반적으로 해당 도메인의 객체들을 한 번에 업데이트하는 것은 어려운 경우가 많아요. 따라서 리스트의 각 원소에 대해 개별적으로 업데이트하는 방식을 사용하는 것이 일반적이에요.

하지만, 효율적인 업데이트를 위해 일괄 업데이트를 시도하고자 한다면 JPA를 사용하면 좋아요. JPA는 변경된 엔티티를 감지하고 적절한 update 쿼리를 일괄 수행하도록 도와주는 기능을 제공합니다.

확실히 일괄 업데이트를 위해 사용할 수 있는 방법은 바로 “Querydsl”을 이용하는 것이에요. Querydsl을 사용하면 엔티티를 대상으로 쿼리를 작성할 수 있고, 동적으로 조건을 추가하여 한 번에 업데이트할 수도 있습니다.

아래는 JPA와 Querydsl을 사용하여 리스트를 한 번에 업데이트하는 예시 코드입니다.

@Transactional
void 회원탈퇴메소드() {
List<회원> 회원리스트 = queryFactory.selectFrom(회원)
.where(회원.활성여부.eq(“활성”))
.fetch();

for (회원 회원 : 회원리스트) {
    회원.set활성여부("탈퇴");
}

// JPA가 변경된 엔티티들을 감지하고 한 번에 업데이트해줍니다.
entityManager.flush();

return;

}

하지만, 실제 상황에서는 업데이트 대상이 되는 데이터의 양이 많지 않거나, 업데이트 시의 성능에 크게 영향을 주지 않는다면 기존 방식을 사용하는 것이 더 간단하고 편리할 수 있어요.

추가적인 도움이 필요하시다면 언제든지 물어보세요! 좋은 결과 있으시길 바랄게요.

Inner class로 Config를 지정하는 이유

0

29

1

Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.

0

47

2

테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.

0

32

1

리뉴얼 시기

0

53

2

JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문

0

56

3

설계 트레이드 오프 링크 접속 안됨

0

85

2

테스트 질문, 어떤것을 사용할것인것에 대해서

0

46

1

service-discovery 프로세스 가동 이유

0

51

1

트래잭션 전파 기본- 에 대한 개념 질문? 이렇게 생각해도 맞나요?

0

47

1

헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다.

0

133

2

h2 database

2

59

2

Request DTO에서 Entity를 생성할 때 의존성 방향을 반대로 하면 어떨까요?

0

116

2

Querydsl 설정 할때 - run and test 다르게 설정 할때? 질문

0

61

1

new 패키지명.Dto명 생략가능

0

74

2

변경감지(더티체킹) 이후 플러시할 경우의 쿼리

0

73

1

단일 테이블 시 null 값과 연관관계 필요성 질문

0

65

1

SpringBoot4 버전 Hibernate5JakartaModule 라이브러리 오류

0

64

1

aws 관련 질문드립니다.

1

69

3

setter 사용하지 않기

0

61

1

안녕하세요 토비님 혹시 완성된 코드의 repository 주소는 없을까요?

0

127

2

자막 오타 제보

0

54

1

rabbitmq에 configservice 연결에 대해 질문있습니다.

0

65

1

안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..

0

74

2

join에대해 질문드립니다.

0

55

1