쇼핑몰의 유저관련 기능을 개발하기 위해 Mysql에서 생성날짜, 소프트삭제 상태 등 빈값을 넣으면 Default값이 들어가도록 MysqlWorkbench를 통해서 DB를 설정했다.
그런데 NULL값이 들어가거나 NOT NULL로 설정하면 에러가 발생하는 등의 다양한 문제를 겪었다.
(https://stackoverflow.com/questions/1453483/mysql-default-value-issue)
음... 스택오버플로우에 mysql not working이라고 구글링 하니 이런 답변이 달려있었다.
이미 NULL 허용도 NOT NULL도 설정해봤지만 해결하지 못했다.
그래도 두번째 답변에 스크립팅 언어로 해결해야하므로 라고 하니 Spring Boot를 키워드로 다시 검색을 시도해보았다.
Entity에 @DynamicInsert 어노테이션을 추가하면 해결된다고 한다.
정확한 정보는 공식문서를 참조하려했지만 공식사이트가 동작하지 않는다.
(https://spaces.redhat.com/hibernate/orm/5.6/javadocs/)
그래서 블로그를 참조해 보았다.
https://mkyong.com/hibernate/hibernate-dynamic-insert-attribute-example/
위 블로그에서 말하기를 DynamicInsert를 설정하면 Hibernate의 SQL INSERT문에서 null이 포함된 값은 제외한다는 의미라고 한다.
실서비스를 할 프로젝트이기에 DB를 공개하기는 꺼려 결과를 직접 보여주기는 어렵지만 실제로 설정해주니 Default값이 적용되었다.
UserEntity 객체 생성과정에서 값을 넣어주지 못하고 빌드하여 null이 들어가있는 컬럼들은 INSERT문에 쿼리에서 조차 제외되었다.
앞으로 당분간 DB나 Entity는 지금 임시 코드와 동일한 구조로 생산될것같다.