Search
Duplicate
🍁

JPA @Column과 @Size 차이 무엇을 사용해야 할까

태그
JPA
Hibernate
DataBase
Java
Kotlin
공개여부
작성일자
2021/05/31
JPA 관련 글을 읽다가 @Size 라는 annotation 을 발견하게 되었다. @Columnlength 라는 필드가 있지만, 둘의 차이에 대해 정리한 글이 있어 핵심만 가져왔다. 자세한 내용은 바로 아래 링크를 읽어보면 될것 같다.
@Entity public class Book { @Id @GeneratedValue private Long id; @Column(length=50) private String title; ... }
Java
create table Book ( id int8 not null, title varchar(50), version int4 not null, primary key (id) )
SQL
@Column(length = 50) 을 사용하게 되면 varchar(50) → column에 50개의 char 가 들어가도록 쿼리를 생성한다.
@Entity public class Book { @Id @GeneratedValue private Long id; @Size(max=50) private String title; ... }
Java
이와 같이 @Size 를 사용할 경우 두가지 이득이 있다.
1.
먼저 @Column 의 예시와 같이 DDL statement 가 동일하게 varchar(50) 이 된다.
2.
Hibernate 의 validation bean 이 persist, update 전에 자동으로 @Size 에 해당하는 값에 맞게 데이터가 할당되었는지 검증한다.

그럼 무엇을 사용해야 할까?

둘이 하는짓은 결국 비슷하지만 @Size 의 경우 저장하기 전에 데이터의 검증 절차를 한번 더 갖기 때문에 더 안전하고 강력한 접근을 한다
TOP