DEV-STUDY/Java
@NotNull, @NotEmpty, @NotBlank 중 뭘 쓸까
HwangJerry
2024. 1. 9. 19:33
게시글 수정 API를 작성하고 있었다.
게시글 수정을 구현하기 위해서는 다음 정보들을 한 번에 받는다.
AS-IS
public record PostUpdateRequestDto(
String title, // 제목
String body, // 내용
String thumbnail, // 썸네일
String category // 게시글 카테고리
) {
}
위 dto properties의 유효성 조건은 다음과 같다.
- 제목과 내용, 카테고리는 비어있으면 안된다.
- 썸네일은 없으면 기본 이미지로 제공된다.
이런 유효성 검사는 javax(or jakarta)에서 기본적으로 @NotNull, @NotEmpty, @NotBlank라는 어노테이션을 지원한다. 그렇다면 이 세가지 중 어떤걸 써야 할까?
영어를 한국어로 바꾸니까 모호하게 느껴졌어요.
문제는 내가 한국인이기 때문에 발생했다. empty와 blank가 내 기준에선 똑같은 의미처럼 느껴졌기 때문이다.
Not Empty? 비어있지 않다?! Not Blank...? 빈칸이 아니다?
결국 찾아보게 되었는데, 단순하게 아래와 같이 정리된다.
분류 | 내용 |
@NotNull | null인지 아닌지 체크 |
@NotEmpty | null인지 아닌지 && ""인지 아닌지 체크 |
@NotBlank | null인지 아닌지 && ""인지 아닌지 && " "와 같이 공백으로 채워진 문자열인지 |
이렇게 내용을 알고 보면 감이 바로 온다. 익숙해지면 자연스럽게 외워지겠지 싶은데, 당장 오랜만에 보니까 갑자기 헷갈려서 정리하게 되었다.
TO-BE
위 내용을 바탕으로 아래와 같이 정리하였다.
import javax.validation.constraints.NotBlank;
public record PostUpdateRequestDto(
@NotBlank
String title,
@NotBlank
String body,
String thumbnail,
@NotBlank
String category
) {
}