Notice
Recent Posts
Recent Comments
Link
HwangHub
@NotNull, @NotEmpty, @NotBlank 중 뭘 쓸까 본문
게시글 수정 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
) {
}
'workspace > 아티클' 카테고리의 다른 글
게시글 body(문자열)에 이미지 태그 내용 제거하여 반환하기 (0) | 2024.01.09 |
---|---|
LocalDateTime 형식 파싱 (ofPattern & ofLocalizedDate) (1) | 2024.01.09 |
Redis with Spring 기본 라이브러리 정리 (1) | 2024.01.07 |
BST의 시간복잡도 O(log N) 증명하기 (1) | 2024.01.07 |
[이슈] 레디스 캐시 업데이트 이슈 트러블슈팅 (0) | 2024.01.05 |
Comments