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(flushAutomatically = true, clearAutomatically = true)
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
int setFixedFirstnameFor(String firstname, String lastname);
  • flushAutomatically: 커밋 전 플러시
  • clearAutomatically: 커밋 후 영속성 컨텍스트 초기화

 

예제) 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);
}
  • value: 쿼리 힌트 정의
  • forCounting: (페이징 시) 카운트 쿼리에 힌트 적용할지 여부

 


출처