취미겸생업

[Spring boot] Null과 Builder 본문

IT/Spring Boot

[Spring boot] Null과 Builder

nohumb 2026. 4. 1. 20:49
  • 프론트, 백엔드 로그인 연동 과정에서 회원가입과 로그인 및 현재 사용자 정보까지 문제 없이 연동함
    • 프론트에서 name 필드에 null이 반환된 것을 UserInfo 클래스로 역직렬화 하는 과정에서 에러가 발생 (Flutter의 null-safety가 없었다면 아마 발견하지 못했을 것)
    • 확인해보니 회원가입 시에 name 필드를 받기는 하였으나 UserInfo를 DB에 영속화 하는 과정에서 name 필드 set 코드를 누락함
    • builder 패턴을 사용하다보니 컴파일 타임에서 잡지 못했고, DB에서 제약조건으로 not null 또한 들어가있지 않는 실수를 한 것
  • 실수한 부분
    • DB 중요한 필드에 제약조건으로 Not Null을 걸지 않음
    • Not Null을 걸었더라도 런타임에서 우연히 발견되지 않는다면 치명적이었을 것
  • 컴파일 타임에서 이런 치명적인 논리적 오류를 방지할 수 있는 대책을 세워야 함
    • Builder 패턴을 포기하기엔 코드 가독성과 일관성을 쉽게 포기할 수 없음
    • 엔티티 필드 Not null과 빌더 기본값을 사용하자!
@Column(name = "difficulty", nullable = false)
@Builder.Default
private double difficulty = 0.5;