[JPA] insert 시 DB Default 값 적용 (@ DynamicInsert, @ ColumnDefault)

2022. 7. 17. 23:40·Tech/Worklog

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
'Tech/Worklog' 카테고리의 다른 글
  • Spring boot h2 연동
  • ORM / Spring Data JPA
  • SQL/NoSQL
sooomni
sooomni
  • sooomni
    Dev Log
    sooomni
  • 전체
    오늘
    어제
    • 분류 전체보기 (20)
      • Tech (20)
        • TIL (2)
        • Worklog (4)
        • DB (4)
        • Docker (6)
        • Cloud (3)
        • 책 리뷰 (0)
        • 이펙티브자바 (1)
      • 이직기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQL
    cloud
    NoSQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
sooomni
[JPA] insert 시 DB Default 값 적용 (@ DynamicInsert, @ ColumnDefault)
상단으로

티스토리툴바