[JPA] @Column Annotation

GilLog·2021년 7월 18일
0

JPA

목록 보기
3/8

🙆‍♂️ import 🙇‍♂️

자바 ORM 표준 JPA 프로그래밍


@Column

JPA에서 DB Table의 Column을 Mapping 할 때 @Column Annotation을 사용한다.


@Table(name = "TB_USER")
@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="U_ID")
    private long id;
    
    @Column(name="ID")
    private String userId;

    @Column(name="NICK_NAME")
    private String nickName;

    @Builder
    public User(long id, String nickName) {
        this.id = id;
        this.nickName = nickName;
    }
}

여기서 @Column을 사용하지 않으면 userId와 같이 속성명 그대로 DB Column과 Mapping을 시도한다.

@Column Annotation은 아래와 같은 속성 값이 있다.

속성설명기본값
nameMapping할 Column의 이름을 지정.객체 Field 이름
insertableEntity 저장 시 해당 Field도 저장,
false로 읽기 전용 설정 가능.
true
updatableEntity 수정 시 해당 Field도 수정,
false로 읽기 전용 설정 가능.
true
table하나의 Entity설정에서 두 개이상 Table에 매핑할 때 사용현재 Class가 매핑된 Table
nullable(DDL)true/false로 null 허용 여부 설정true
unique(DDL)true/false로 Unique 제약 조건 설정
length(DDL)Column 속성 길이 설정255
columnDefinition(DDL)DB Column 정보를 직접 설정Java Type과 설정 DB 방언으로,
적절한 Column Type 생성
precision, scale(DDL)BigDecimal, BigInteger Type에서 사용,
precision은 소수점 포함 전체 자릿수,
scale은 소수 자릿수,
double, float Type에는 적용되지 않음.
아주 큰 숫자나 정밀한 소수를 다룰때 사용.
precision=19, scale=2

여기서 name, insertable, updatable, table을 제외한 나머지 속성들은 DDL 생성 기능을 사용할 때만 사용되는 속성들로,

JPA 실행 로직에는 영향을 끼치지 않는 속성들이다.

직접 DDL을 설정하여 DB Table을 구성할 경우 사용할 이유가 없다.
Entity만으로 개발자가 DB Table 구조 파악이 가능하다는 장점

위 속성 중 nullable의 경우 Java의 기본 타입(int, long, ...)은 null 값 입력이 불가능 하므로,

false를 통해 DB Column에 Not Null 제약 조건을 지정해 두는것이 안전하다.
혹은 직접 DB Column에 Not Null 제약 조건 추가

profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/

0개의 댓글