[JPA] Bulk update 일괄 수정하기

울상냥·2023년 3월 30일
0

JPA

목록 보기
1/4

현재 프로젝트에서 부모 엔티티 삭제시 자식 엔티티를 null 처리 해줘야 했는데..
자식 엔티티를 모두 조회후 update 쿼리를 날리기에는 데이터가 매우 많을 수 있어 bulk update JPQL을 통해 null 처리를 진행했다.


code

Schedule 테이블의 hours칼럼을 null로 UPDATE하도록 JPQL을 작성했다.

@Modifying

@Modifying 어노테이션은 @Query 어노테이션으로 작성된 INSERT, UPDATE, DELETE 쿼리를 사용할 때 함께 사용해주어야 한다.
이때 return 타입은 void, int, Integer 으로 지정할 수 있다.

clearAutomatically

여기서 clearAutomatically = true 옵션을 주었는데 defualt값은 false 이다.

해당 옵션을 주지 않으면 @Modifying@Query를 사용한 연산 수행후에 1차 캐시가 업데이트되지 않고 그 내용을 읽어오기 때문에 UPDATE전 데이터를 읽어올 수 있다.

해당 옵션을 주게되면 영속성 컨텍스트를 clear()해 주기 때문에 이후 엔티티 조회시에는 다시 데이터베이스에서 조회해오게 된다.

profile
안되면 되게하라

0개의 댓글