Red Glitter Pointer

 @Size

  • Java Bean Validation 어노테이션
  • 필드 크기가 min과 max 사이여야 값을 저장할 수 있도록 유효성 검사를 해줌
  • JPA나 Hibernate로부터 독립적인 bean을 만들어줌
public class User {

    @Size(min = 4, max = 10)
    private String username;  // 4 ~ 10 범위 밖의 크기 값이 들어오면 Exception 발생

}

 

 

 

 @Length

  • Hibernate 어노테이션
  • min과 max를 이용하여 필드 값 크기에 대한 유효성 검사
public class User {

    @Length(min = 4, max = 10)
    private String username;

}

 

 

 

 @Column(length = value)

  • JPA에서 제공하는 어노테이션
  • JPA가 @Entity가 붙은 클래스를 DB테이블로 생성할 때, @Column의 length 속성을 사용하여 컬럼 문자열의 길이를 정한다.
    • DDL을 컨트롤하기 위해 사용된다.
  • length 보다 긴 문자열을 넣으려고 하면 SQL error 발생
  • 유효성 검사를 해주는 것이 아니라 테이블 컬럼의 길이 속성만 지정해주는 것
  • String 필드 경우에만 적용되며, length 값을 지정해주지 않는다면 기본값으로 varchar(255) 크기로 생성됨
@Entity
public class User {

		@Column(length = 20)
		private String password;

}

 

 

 

💡 @Size 를 사용할 경우 장점!

1. @Column 의 예시와 같이 DDL statement가 동일하게 varchar(20) 이 된다.
2. Hibernate의 validation bean이 persist, update 전에 자동으로 @Size에 해당하는 값에 맞게 데이터가 할당되었는지 검증한다. 
3. @Length 보다 @Size가 더 가볍다고 한다

 

 

 

+ Recent posts

loading