Note

[TIL] @ColumnDefault 오류와 기본 값 설정 방법

by 달쿨

TIL

개요

프로젝트를 진행하며, soft delete 방식으로 삭제를 구현하기 위해 isDeleted 필드를 만들고 엔티티가 생성될 때 자동으로 false를 할당해주기 위해 @ColumnDefault 를 작성했다.

처음 작성한 코드

그런데 실제로 생성시에 false 값이 아닌 null 값이 들어가는 문제를 발견했고, 왜 @ColumnDefalut가 제대로 작동하지 않는지 궁금해졌다.

 

@ColumnDefault은 왜 작동하지 않는가

@ColumnDefault는 table을 처음 생성할 때 default 값을 생성해 주는데, 이는 hibernate에서 테이블 속성이 create-drop인 경우에만 적용된다고 한다. 즉, create-drop이 아니라면 제대로 적용되지 않는 것이다.

 

기본 값 할당하기

필드 생성 시 값을 할당해주는 방식으로 해결할 수 있다.

수정한 코드

Boolean은 값 할당 없이도 nullable = false로 작성해주면 null을 false로 할당해 제대로 작동된다. 

boolean 사용

작성하면서 깨달았는데 그냥 래퍼타입 말고 기본 데이터 타입을 사용하면 처음부터 null 허용을 막기 때문에 제대로 사용할 수 있었다.

 

느낀 점

@ColumnDefault를 사용한다고 무조건 기본 값이 설정되지 않는다는 것을 알았다. 그리고 필드 설정할 때 습관적으로 래퍼 클래스를 사용하는데 null 값 허용할지 안할지 생각하고 사용해야 겠다고 다시 한번 다짐했다.

블로그의 정보

note

달쿨

활동하기