Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Archives
Today
Total
관리 메뉴

개발자

[JPA] Bean vaildation - @Eamil, @NotNull @NotEmpty @NotBlank 본문

개발자/workflow 리팩토링 프로젝트(SpringBoot,JPA,MySQL)

[JPA] Bean vaildation - @Eamil, @NotNull @NotEmpty @NotBlank

GoGo개발 2023. 3. 25. 17:19

@Email 어노테이션은 javax.validation.constraints 패키지에 포함된 어노테이션 중 하나로, 주어진 문자열이 이메일 형식에 맞는지 검증하는데 사용됩니다.

주어진 문자열이 null인 경우는 유효성 검사를 통과하며, 이메일 형식에 맞지 않는 경우 ConstraintViolationException 예외가 발생합니다.

@Email 어노테이션은 아래와 같은 옵션을 지원합니다.

  • message: 유효성 검사 실패 시 출력할 메시지를 지정합니다.
  • groups: 어노테이션을 적용할 유효성 검사 그룹을 지정합니다.
  • payload: 유효성 검사 실패 정보를 전달할 페이로드를 지정합니다.
  • regexp: 이메일 형식을 검증하는 정규식 패턴을 지정합니다. 기본값은 ".+@.+" 입니다.
  • flags: 정규식 패턴에 대한 매치 플래그를 지정합니다. 기본값은 Pattern.Flag.CASE_INSENSITIVE입니다.

아래는 @Email 어노테이션을 사용하는 예시입니다.

 

 

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;

public class User {
    
    @NotBlank(message = "Email cannot be blank")
    @Email(message = "Invalid email format")
    private String email;
    
    // getters and setters
}

 

위 예제에서 User 클래스의 email 필드는 @NotBlank 어노테이션으로 비어있는지 검증하고, 이어서 @Email 어노테이션으로 이메일 형식에 맞는지 검증합니다. 이렇게 유효성 검사를 설정하면, 해당 필드가 이메일 형식에 맞지 않는 경우 ConstraintViolationException 예외가 발생합니다.

 

@NotBlank

 

@NotNull  @NotEmpty @NotBlank
 는 사용법은 매우 유사하지만 중요한 차이가 있습니다.

 

@NotNull

우선 @NotNull 은 위에 살펴본 것 처럼 이름 그대로 Null만 허용하지 않습니다.

따라서, "" 이나 " " 은 허용하게 됩니다.

그렇기 때문에 만약 "" (초기화된 String) )이나 " " (공백) 을 허용하지 않는다면 사용해서는 안됩니다.

Null 이 들어오게 되면, 로직에 예상치 못한 오류가 발생하거나 문제가 생길 경우 사용해야 합니다.

즉, 초기화나 공백의 값이 들어와 저장은 되야하지만 Null 로 들어온 경우 오류가 나는 변수를 받을 때 사용하면 됩니다.

 

 

@NotEmpty

@NotEmpty  null  "" 둘 다 허용하지 않게 합니다.

@NotNull 에서 "" validation 이 추가된 것입니다.

즉, @NotEmpty  null  "" 은 막히되, " " 은 허용이 됩니다.

 

@NotBlank

@NotBlank  null  ""  " " 모두 허용하지 않습니다.

@NotEmpty 에서 " " validation 이 추가된 것입니다.

즉, 세개 중 가장 validation 강도가 높은 것으로,@NotBlank  null  ""  " " 모두 허용하지 않습니다.