[Spring] @Modifying

김상현·2022년 11월 18일
0

Spring

목록 보기
7/13
post-thumbnail

📒 [실전! 스프링 데이터 JPA - 김영한]
📒 [Spring Docs]


📍 @Modifying

  • @Query 어노테이션을 통해 작성된 쿼리 중 데이터 조작 언어(Data Manipulation Language)UPDATE, INSERT, DELETE 가 포함된 쿼리 메서드에 사용합니다.
  • 주로 executeUpdate() 메서드가 적용된 벌크 연산(여러 건의 데이터를 한 번에 조작하는 방법)이 사용될 때 사용합니다.
public @interface Modifying {

	/**
	 * Defines whether we should flush the underlying persistence context
     * before executing the modifying query.
	 *
	 * @return
	 */
	boolean flushAutomatically() default false;

	/**
	 * Defines whether we should clear the underlying persistence context
     * after executing the modifying query.
	 *
	 * @return
	 */
	boolean clearAutomatically() default false;
}

📌 clearAutomatically

  • clearAutomatically 속성의 기본값(default)은 false 이다.
  • 수정 쿼리를 실행한 후 기본 영속성 컨텍스트를 clear 하는지 여부를 정의합니다.
  • 수정 쿼리를 실행하게 되면 Spring의 영속성 컨텍스트를 거치지 않고 DB로 직접 전달합니다.
  • 이 때, 영속성 컨텍스트와 DB 사이에 불일치가 발생할 수 있습니다.
  • 이를 해결하기 위해서 clearAutomatically 속성을 true 로 설정하면 현재 영속성 컨텍스트의 모든 객체 정보에 대하여 clear 를 진행합니다.

📌 flushAutomatically

  • flushAutomatically 속성의 기본값(default)은 false 이다.
  • 수정 쿼리를 실행하기 전에 기본 영속성 컨텍스트를 flush 해야 하는지 여부를 정의합니다.
  • 수정 쿼리를 실행하기 전에 영속성 컨텍스트에 존재하는 객체 정보 중에 DB에 저장해야 하는 정보가 존재할 때 flushAutomatically 의 속성을 true 로 설정하면 현재 영속성 컨텍스트의 모든 객체 정보에 대하여 flush 를 진행합니다.
profile
목적 있는 글쓰기

0개의 댓글