[Hoops PJ] 트러블 슈팅 & TIL (3)
@NotNull, @NotBlank, @NotEmptyPermalink
이번에 코드 리뷰를 통해 그 동안 잘못 알고 있었던 게 있어서 회고를 통해 정리.
@NotNull
@NotBlank
@NotEmpty
@NotNull
→ Null만 허용하지 않는다
- “”, “ “ 은 허용이 가능하다.
- int, long 같은 객체 타입 필드에 모두 사용 가능하다.
@NotEmpty
→ Null, “” 을 허용하지 않는다.
- “ “ 와 같은 공백은 허용된다.
- 객체가 null 이 아니고 배열 컬렉션, 맵 등의 요소가 최소 하나 이상 있음을 검증한다.
- 문자열에 대해서는
@NotBlank
와 동일한 효과가 있다. - 배열, 컬렉션, 맵, 문자열 등에 사용 가능하다.
@NotBlank
→ Null, “”, “ “ 모두 허용하지 않는다.
- 문자열 필드에만 사용할 수 있다.
하지만 다음과 같은 경우에는 @NotNull
, @NotBlank
함께 써줘야 하는 경우가 있다.
public class Person {
@NotNull
private String name;
@NotNull
private Address address;
}
위와 같이 객체 타입 필드에 대해서는 @NotNull
과 @NotBlank
를 함께 사용해야 한다.
name 같은 경우는 @NotBlank
만 사용해도 null과 빈 문자열 모두 방지할 수 있지만 adress 같은 경우 필드가 Address 객체 타입이므로 @Notnull
을 사용해서 null 값을 방지해야한다.
문자열 필드에는 @NotBlank
만 사용하고, 객체 타입 필드에는 @NotNull
을 사용하는 것이 일반적이지만 상황에 따라 문자열 필드에도 @NotNull
과 @NotBlank
를 모두 사용할 수 있다.
https://www.baeldung.com/java-bean-validation-not-null-empty-blank
댓글남기기