728x90
값에 null이어서 생기는 예외를 막기 위해 어노테이션을 사용하곤 한다.
jakarta.validation.constraints 패키지 하위에 존재하는
비슷하면서도 다른 세 가지 어노테이션을 비교하려고 한다.
1. @NotNull
말 그대로 Null을 허용하지 않는다.
그런데 Null만 허용하지 않으므로 ""(초기화된 String)이나 " "(공백)은 허용하게 된다.
만약 ""이나 " "을 허용하지 않으면 이걸 사용해서는 안 된다.
""와 " "을 허용하되, Null이 들어오게 되면 로직에 예외가 발생할 경우 사용해야 한다.
정수값을 사용해야 할 경우 사용하면 좋다. (물론 그 외에도 두루 쓰임)
2. @NotEmpty
@NotEmpty는 null과 "" 둘 다 허용하지 않는다.
@NotNull에서 "" validation이 추가된 것이다.
" "은 허용이 된다는 점에 주의하자.
주로 컬렉션과 문자열에 사용된다.
3. @NotBlank
null과 ""와 " " 모두 허용하지 않는다.
@NotEmpty에서 " " validation이 추가된 것이다.
셋 중 validation 강도가 가장 높다.
주로 문자열에 사용된다.
예시
import com.allrounders.goalkeeper.domain.Likes;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GoalDTO {
private Integer goalId;
@NotBlank
private String title;
@NotBlank
private String content;
@NotNull
private Integer maxPeople;
private List<Integer> memberGoalIds;
private List<Likes> likeIds;
@NotNull
private Integer authCount;
@NotBlank
private String complete;
@NotNull
private LocalDate startDate;
@NotNull
private LocalDate endDate;
@NotNull
private LocalDate createDate;
}
- null이 아니고, 값이 비면 안 되고, 공백을 허용하지 않아야 하는 문자열의 경우 @NotBlank를,
- 그 외는 @NotNull을 사용해줬다.
정리
@NotNull | @NotEmpty | @NotBlank | |
허용하지 않는 값 | - null | - null - "" |
- null - "" - " " |
사용 | 객체, 기본 타입 | 주로 컬렉션, 문자열 | 문자열 |
참고
https://sanghye.tistory.com/36
728x90
'Web > SpringBoot' 카테고리의 다른 글
[SpringBoot] 회원가입 인증 메일 발송 기능 구현 (0) | 2024.11.23 |
---|---|
[SpringBoot] 쿼리 메소드 vs JPQL vs QueryDsl vs NativeQuery (7) | 2024.04.19 |