DynamicInsert, DynamicUpdate
기본적으로 하이버네이트는 INSERT
와 UPDATE
시에 모든 컬럼을 사용한다.@DynamicInsert
는 INSERT
구문 생성 시점에 null이 아닌 컬럼들만 포함하며,@DynamicUpdate
는 UPDATE
구문 생성 시점에 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 |