logo

[Spring JPA] @DynamicInsert와 Boolean을 활용하여 DB default값 삽입하기

language-logoSpring
language-logoMyBatis

• Spring Data JPA를 사용하여 개인 프로젝트를 진행하던 중, 유저 계정의 활성화 여부를 데이터베이스에서 기본값으로 설정하였으나, 실제로는 false 값이 저장되는 문제가 발생하였다.
• 이는 자바의 기본형 타입이 필드에 명시적으로 초기화되지 않으면 각 타입에 맞는 기본값을 할당하기 때문으로, 이를 해결하기 위해서는 필드에 명시적으로 값을 전달해주어야 한다.
• '@DynamicInsert' 어노테이션을 사용하면 INSERT 쿼리를 생성할 때 'null'인 필드를 자동으로 제외하고, Boolean 래퍼 클래스를 사용하면 'null' 값을 가질 수 있게 되어 데이터베이스가 설정한 기본값을 적용할 수 있다.
• MyBatis를 사용할 때는 'DEFAULT' 값을 가진 컬럼을 SQL 쿼리에서 명시적으로 제외시키는 것과 'null' 값을 가지는 것이 같다고 생각했지만, JPA에서는 필드가 'null'인 경우와 필드가 쿼리에서 완전히 제외되는 경우가 다르게 동작한다는 것을 알게 되었다.

thumbnail
북마크
공유하기
신고하기
8분 분량
조회수 235
profile-image
일 년 전
Copyright © 2025. Codenary All Rights Reserved.