개발자
[JPA] Bean vaildation - @Eamil, @NotNull @NotEmpty @NotBlank 본문
[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 과 "" 과 " " 모두 허용하지 않습니다.
'개발자 > workflow 리팩토링 프로젝트(SpringBoot,JPA,MySQL)' 카테고리의 다른 글
[JPA] Lombok 어노테이션(@Data,) (0) | 2023.05.02 |
---|---|
[class] 내부 클래스, 내부 static 클래스 (0) | 2023.05.02 |
[JPA] SOLID원칙 (request,response용 데이터 클래스를 command,DTO로 나누어서 사용한 이유) (0) | 2023.03.25 |
[JPA] exception handling(예외 처리)/error 분류 (0) | 2023.03.21 |
♣[WF/Spring] 의존성 주입(생성자주입/필드주입/수정자주입)/JPA에서 Lombok 이용한 의존성 주입 (0) | 2023.02.22 |