제약조건

박원종·2021년 3월 13일
0

spring

목록 보기
4/4
post-thumbnail

🧰 삽질로그

@Valid로 유효성을 검사할때 제약조건들을 해당 필드 위에 적어주어야 한다

필자는 회원가입 시 개인정보를 입력할 때 널 값을 받지 않도록 하려고 한다.

찾아보니 @NotNull, @NotEmpty, @NotBlank 3개가 공백을 체크하는 제약이었다.

무슨 차이인지 처음에 모르고 사용을 했다.

📌첫번째 시도 : @NotEmpty

public class User {
    private int seq;
    @NotEmpty
    private int class_no;
    @NotEmpty
    private String name;
    @NotEmpty
    private String major;
    @NotEmpty
    private String field;
    @NotEmpty
    private String id;
    @NotEmpty
    private String pw;
    ...
  • 필자는 null값 뿐만 아니라 공백문자열("")도 체크하고 싶어서 @NotEmpty 사용.
  • 하지만 당연히 오류가 발생한다.
    • @NotEmpty는 오로지 StringCollection 클래스 타입만을 검사 가능하다

📌두번째 시도 : @NotNull

public class User {
    private int seq;
    @NotNull
    private int class_no;
    @NotEmpty
    private String name;
    @NotEmpty
    private String major;
    @NotEmpty
    private String field;
    @NotEmpty
    private String id;
    @NotEmpty
    private String pw;
    ...
  • @NotNull은 모든 타입에 대해 null 만 허용하지 않는다
    • 따라서 공백문자열 ""은 허용
  • class_no만 int형이기 때문에 얘만 @NotNull

📌세번째 시도 : @NotBlank

public class User {
    private int seq;
    @NotNull
    private int class_no;
    @NotBlank
    private String name;
    @NotBlank
    private String major;
    @NotBlank
    private String field;
    @NotBlank
    private String id;
    @NotBlank
    private String pw;
    ...
  • @NotBlank는 위 두개의 태그 차이를 알아보다가 알게된 것이다
    • @NotEmpty의 상위버전, " "(띄어쓰기)도 허용하지 않는다
  • 띄어쓰기 하지맛!

📌 message 속성

public class User {
    private int seq;
    @NotNull
    private int class_no;
    @NotBlank(message = "이름을 입력하지 않았습니다.")
    private String name;
    @NotBlank
    private String major;
    @NotBlank
    private String field;
    @NotBlank
    private String id;
    @NotBlank
    private String pw;
    ...
  • message 속성은 유효성 검사에 실패했을때 보여줄 defaultMessage이다.
    • 어떻게 사용하는지 알고 싶다면 다음링크 ㄱㄱ

📌다양한 제약조건 에노테이션

profile
잡코딩

0개의 댓글