본문 바로가기
Spring

@Valid를 위한 Blank, Empty, Null 차이

코동이 2021. 5. 13.

 프로젝트를 진행하면서 @Valid를 통해 "입력을 했는가 안했는가"를 판단하기 위해 여러가지 설정을 살펴보았습니다. @Blank, @Empty, @Null을 통해 가능하다고 하는데 도통 처음에는 잘 이해가 되지 않았습니다. null, "", " " 3개의 차이를 이해하는 것이 관건입니다. 그래서 확실히 정리하기 위해서 글을 씁니다. 다음사전에서 해석을 참고했습니다.

 

 

1. @Null

다음 사전 null

 null은 쉽습니다. 아예 존재자체를 안합니다. 따라서 null의 유무만 확인하면 됩니다. 보통 사용하는 @NotNull 은 말 그대로 null만 아니면 됩니다. null 빼고 전부 통과!

 

2. @Empty

다음 사전 empty

 여기서부터 조금 헷갈리기 시작합니다. 그래서 사전을 찾아보게 되었습니다. 설명을 본다면 [] 안에 그릇, 차, 배, 승객 등등 다양한 예시가 나옵니다. 그말은, 껍데기는 있지만 그 안에가 아무것도 들어있는게 없이 비어있다는 뜻입니다. null은 껍데기도 뭐도 정말 아무것도 없는 無인 것에 비해 조금 낫습니다. 따라서 ""는 empty입니다. 대신 껍데기만 있기 때문에 길이는 0이어야 합니다!

 

3. @Blank

다음 사전 blank

 

  Blank는 공백이라고 나와 있습니다. 써 넣지 않은, 기입되지 않은 등의 설명이 개발자 입장에서도 우리가 유효성을 검사하는 바와 가장 맞아떨어지는 설명입니다. 이 때 공백이라는 빨간 글씨처럼 " "은 Blank의 범위에 포함됩니다. 즉, 꼭 기입되어야 하는 정보가 있을 때 null, "", " "을 모두 포함하니 필수 필드를 @NotBlank로 설정해서 방지해야 합니다.

 

  null "" " "
@NotNull false true true
@NotEmpty false false true
@NotBlank false false false

 우리는 비어있거나 기입하지 않은 것을 주로 확인하기 때문에 @Not~을 더 많이 사용 할 것입니다. 우리가 만든 폼에 값을 입력하지 않고 넘어갔다고 여겨지는 경우에는 예외를 발생시키기 위해서 @NotBlank를 써야 최대한 많이 체크할 수 있습니다. 

반응형