Spring/Spring Data JPA

[Spring Data JPA] 3-2. JPA Query Methods (4)

noahkim_ 2024. 8. 2. 16:22

8. Modifying Queries

@Modifying

  • 명시적 쿼리 선언 메서드 중, 수정 or 삭제 연산일 때 붙여주는 애노테이션

 

update
@Modifying
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
int setFixedFirstnameFor(String firstname, String lastname);
  • (attribute) flushAutomatically: EntityManager flush (수정 쿼리 실행 전)
  • (attribute) clearAutomatically: EntityManager clear (수정 쿼리 실행 후, 이전 데이터 삭제하기)

 

delete
  @Modifying
  @Query("delete from User u where u.role.id = ?1")
  void deleteInBulkByRoleId(long roleId);
  • 생명주기 콜백 실행 X (@PreRemove)

 

9. Applying Query Hints

@QueryHints

힌트 추가 (JPA 쿼리)
public interface UserRepository extends Repository<User, Long> {

  @QueryHints(value = { @QueryHint(name = "name", value = "value") }, forCounting = false)
  Page<User> findByLastname(String lastname, Pageable pageable);
}
  • (attribute) value: 쿼리 힌트 정의 (@QueryHint)
  • (attribute) forCounting: (페이징 시) 카운트 쿼리에 힌트 적용할지 여부 (default: true)

 


출처