엔티티 필드 값의 String 길이 설정

·2023년 7월 15일
0

프로젝트 공부

목록 보기
14/33

엔티티 필드 값의 String 길이 설정 방법

ERD에 따라 엔티티를 설정해주다보면 varchar(10), varchar(100)등 길이가 정해져 있다.
이때 @Column의 옵션을 사용하거나 @Size 어노테이션을 이용해 엔티티에도 설정해줄 수 있다.

  • 그리고 JPA의 @Column
  • Hibernate의 @Length
  • JSR-330의 @Size

@Size@Length는 비슷하다. 둘다 필드의 크기에 검증하기위해 사용하며. @Size는 Java-standard annotation이고 @Length는 specific to Hibernate다.

하지만 @Column은 DDL을 컨트롤 하기위해 사용되는 JPA annotation이다.

@Column(length = 100)

@Column은 실제 데이터베이스 열의 특정 특성을 나타내기 위해 사용된다.
length보다 긴 문자열을 넣으려고 하면 SQL error가 나타난다.
유효성 검사를 제공하지 않으므로 테이블 열 속성 지정에만 사용된다.

@Entity
public class Book {
 
    @Id
    @GeneratedValue
    private Long id;
     
    @Column(length=50)
    private String title;
 
    ...
}

@Column 과 @Size를 같이 사용해 bean 검증을 통해 테이터베이스 열 특성을 지정할 수 있다

@Entity
public class User {

    // ... 

    @Column(length = 5)
    @Size(min = 3, max = 5)
    private String city;

    // ...

@Size(max = 100)

@Size가 JPA와 Hinernate로부터 독립적인 bean을 만들어주며, 결과적으로 @Length보다 @Size가 가볍다

@Entity
public class Book {
 
    @Id
    @GeneratedValue
    private Long id;
     
    @Size(min = 3, max=50)
    private String title;
 
    ...
}

이와 같이 @Size 를 사용할 경우 두가지 이득이 있다.

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

참고
JPA @Column과 @Size 차이 무엇을 사용해야 할까
@Size, @Length, @Column 차이점

profile
개발자가 되고싶은 낭랑 24세

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN