@Valid 를 이용해서 입력받을 필드 값의 유효성 검사를 구현하다가 @Size 어노테이션을 알게 되었다.
@Entity 가 붙은 클래스에서는 @Column(length=10) 처럼 length 속성을 정해주기도 하는데, @Size 와는 어떤 차이가 있는지 궁금해져 찾아보았다.
@Size, @Length, @Column 은 모두 필드의 크기를 알려주는 어노테이션이다.
@Size, @Length 는 필드의 크기를 검증하기 위해 사용되어 쓰임이 비슷하다.
@Column 은 위의 두 어노테이션과는 조금 다른데, 유효성 검사가 아니라, 테이블 속 컬럼의 크기를 정하는 DDL을 컨트롤하기 위해 사용된다.
이제 하나씩 자세히 알아가보자!
public class User {
@Size(min = 4, max = 10)
private String username; // 4 ~ 10 범위 밖의 크기 값이 들어오면 Exception 발생
}
public class User {
@Size(min = 2, max = 12)
private String name;
}
@Entity
public class User {
@Column(length = 20)
private String password;
}