JPA @Modifying

박상준·2024년 5월 27일
0

JPA

목록 보기
2/2

언제 쓰나

  • INSERT , UPDATE , DELETE 쿼리를 실행하는 경우 사용한다
  • DB 의 상태를 변경하는 쿼리를 실행하는 경우 필요하다
  • 트랜잭션이 필요하며, 트랜잭션이 없으면 예외가 발생한다

어떻게 동작되나

  • JPA 가 해당 쿼리릐 DB의 상태를 변경하는 쿼리임을 인식하게 한다
  • 해당 어노테이션이 없으면 JPA 는 쿼리를 읽기 전용으로 간주한다
  • @Modifying 어노테이션이 있는 메서드는 트랜잭션 내에서 무조건 실행되어야 한다.
    • 그렇지 않으면 예외가 발생

어노테이션 옵션

  1. clearAutomatically
    1. 쿼리 실행 후 영속성 컨텐스트를 자동으로 비울지 여부를 결정한다
    2. 기본값은 false
  2. flushAutomatically
    1. 쿼리 실행 전에 영속성 컨텍스트를 자동으로 플러시할지 지정한다
    2. 기본값은 false

옵션 사용여부

  • 보통 사용하지 않는 옵션이다
  • 트랜잭션내에서 관리하는 것이 일반적이다.
  • 그리고 영속성 컨텍스트를 비우는 행위는 메모리 최적화를 수행하는 경우에 유용한데,
    • 일반적으로 이걸 제어해야하는 경우에는 뭔가 프로그램 내의 로직상의 문제가 있는 경우가 대부분이다.
profile
이전 블로그 : https://oth3410.tistory.com/

0개의 댓글