2021년 4월 4일 일요일

Entity 생성 - 컬럼에 default 값 관련 메모

Entity - 컬럼에 default 값

토이프로젝트 중 컬럼에 기본 값을 넣고 싶어서 다음과 같은 어노테이션을 사용하였는데, 내가 생각하는 null을 insert 하였을 때 기본 값이 들어가지 않았다.

@Column(columnDefinition="varchar(10) default 'N'")
private Long flag;

테이블 스키마 생성에만 관여하고 insert할 때는 영향이 없는 것 같다. (이유는 더 찾아봐야겠따...)

김영한님은 다음과 같이 사용하신다고 한다. https://www.inflearn.com/questions/83662

...
제가 신규로 진행하는 프로젝트들은 테이블이 제공하는 default를 거의 사용하지 않습니다.

엔티티에 중심으로 개발하다 보니, 객체에 값을 넣는 방식으로 주로 진행합니다.

쉽게 이야기해서 생성자에서 기본값을 미리 설정하는 방식을 사용합니다.

다른 예를 들어드리면, 실무에서 @Index(인덱스 조건)도 DDL을 생성할 때만 사용하기 때문에 사실은 적을 필요가 없지만, 
그래도 엔티티에 이 애노테이션이 있으면, 개발자분들이 엔티티만 보고 인덱스를 생각하고 JPQL을 작성할 수 있기 때문에 사용합니다. 
말씀하신 default도 그런 관점에서 저는 적으면 좋겠다고 생각합니다.
...

위 내용과 같이 생성자에서 값을 그냥 넣어주던가 이렇게 사용하는 방법도 있다.

@Column
private Long flag = "N";