1. @DynamicInsert, @DynamicUpdate 역할
@DynamicInsert는 insert시 null인 필드를 제외
@DynamicUpdate는 update시 null인 필드를 제외
null인 필드를 제외하면 DB에서 DDL 실행 시에 지정했던 default값이 들어간다.
@DynamicInsert
@Entity
@Getter
@ToString(exclude = "ecoEventList")
public class Category extends BaseTimeInfo {
...
2. @ColumnDefault 역할
이 때 @ColumnDefault는 create문이 자동 실행 될 때 default 값을 지정해주는 역할을 한다.
@DynamicInsert
@Entity
@Getter
@ToString(exclude = "ecoEventList")
public class Category extends BaseTimeInfo {
@Id
@GeneratedValue
@Column(name = "CATEGORY_SEQ")
private Long seq;
private String name;
@Enumerated(EnumType.STRING)
private EventType eventType;
@ColumnDefault("0")
private Long defaultPrice;
@ColumnDefault("'Y'")
private String useYn;
...
즉, 이미 DDL이 생성된 상태에서 application.yml 파일의 jpa.hibernate.ddl-auto : update 설정으로 실행하면
insert 시 원하는 컬럼의 default 값 설정 적용이 되지 않고 create-drop으로 변경 후 DDL을 한번 변경해줘야 의도대로 동작한다.
create table category (
category_seq bigint not null,
mod_date timestamp,
reg_date timestamp,
default_price bigint default 0,
event_type varchar(255),
name varchar(255),
use_yn varchar(255) default 'Y',
primary key (category_seq)
)
'Tech > Worklog' 카테고리의 다른 글
Spring boot h2 연동 (0) | 2021.09.14 |
---|---|
ORM / Spring Data JPA (0) | 2021.08.05 |
SQL/NoSQL (0) | 2021.03.15 |