본문 바로가기

STUDY/TIL

JPA | DynamicInsert, DynamicUpdate, 엔티티 리스너

DynamicInsert, DynamicUpdate

기본적으로 하이버네이트는 INSERTUPDATE시에 모든 컬럼을 사용한다.
@DynamicInsertINSERT 구문 생성 시점에 null이 아닌 컬럼들만 포함하며,
@DynamicUpdateUPDATE구문 생성 시점에 null이 아닌 컬럼만(변경된 값만) 포함한다.
해당 애노테이션들은 엔티티에 직접 적용하여 사용한다.

@DynamicInsert
@DynamicUpdate
@Entity
public class User {
    // 생략
}

@DynamicInsert는 컬럼의 지정된 default 값을 적용시키며 INSERT할 때 사용할 수 있다.


@Coulmun(columnDefinition = "")에 지정한 default 값은 DDL 생성기능이다.
즉, 설정에서 ddl-auto나, create-drop같은 값을 지정하면 DDL이 생성되지만, 아무 값도 지정하지 않으면 이미 생성된 DB와 매핑되므로
기본값을 저장하는 것과는 관련이 없다.


Entity Listner

JPA의 리스너 기능은 엔티티의 생명주기에 따른 이벤트를 처리할 수 있게 한다.

  • PrePersist: 엔티티를 영속성 컨텍트스에 관리하기 직전
  • PostPersist: 엔티티를 데이터베이스에 저장한 직후
  • PreUpdate: 엔티티를 데이터베이스에 수정하기 직전
  • PostUpdate: 엔티티를 데티터베이스에 수정한 직후
  • PreRemove: 엔티티를 영속성 컨텍스트에서 삭제하기 직전
  • PostRemove: 엔티티를 데이터베이스에 삭제한 직후
  • PostLoad: 엔티티가 영속성 선텍스트에 조회된 직후 또는 refresh를 호출한 후

'STUDY > TIL' 카테고리의 다른 글

git flow  (0) 2021.08.05
JS | Truthy와 Falsy  (0) 2021.07.26
React | Uncontrolled Components  (0) 2021.07.25
의존관계 주입 방법 네 가지  (0) 2021.07.13
Composite Key (복합 키)  (0) 2021.07.07