최대 1 분 소요

@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

댓글남기기