본문 바로가기
Spring/JPA

필드와 컬럼 매핑

by YoonJong 2022. 9. 20.
728x90

필드에 컬럼 매핑을 통해 DB 에 제약조건을 줄 수 있다.

 * JPA 의 실행 로직에는 영향을 주지 않으며, DDL을 자동생성 할 때만 사용한다

 

예로 들어보자

@Entity
public class Member {

    @Id
    private Long id;

    @Column(name = "name")
    private String username;

    private Integer age;

    @Enumerated(EnumType.STRING)
    private RoleType roleType;

    @Temporal(TemporalType.TIMESTAMP)
    private Date createdDate;

    @Temporal(TemporalType.TIMESTAMP)
    private Date lastModifiedDate;

    @Lob
    private String description;
public enum RoleType {
    USER, ADMIN
}
어노테이션 설명
@Column 컬럼 매핑
@Temporal
( 자바 8 이 되면서 사용 X - LocalDateTime으로 대체 )
날짜 타입 매핑
@Enumerated ( 옵션 String 으로 사용 필수 ) enum 타입 매핑
@Lob BLOB , CLOB 매핑
@Transient 특정 필드를 컴럼에 매핑하지 않음(매핑 무시)

 

@Column

속성 설명 기본값
name 필드와 매핑할 테이블의 컬럼 이름 객체의 필드 이름
insertable 등록 가능여부 TRUE
updateable 수정 가능여부 TRUE
nullable false 로 설정하면 not null 제약조건  
unique 한 컬럼에 유니크 제약조건  
columnDefinition DB 컬럼 정보를 직접 줄 수 있다  
length 문자 길이 제약 조건, String 타입에만 사용 255
precision, scale BigDecimal 에 사용 precision= 19 / scale = 2

 

@Enumerated : 필수로 STRING 으로 사용

 - ORDINAL 로 사용시, enum 값 변경 하면 순서가 잘못될 수 있다.

속성 설명 기본값
value ORDINAL : enum 을 순서로 저장
STRING : enum을 이름으로 저장
ORDINAL

 

728x90

'Spring > JPA' 카테고리의 다른 글

연관 관계 매핑  (1) 2022.09.22
연관 관계가 필요한 이유  (0) 2022.09.21
데이터베이스 스키마 자동 생성  (0) 2022.09.20
객체와 테이블 매핑  (0) 2022.09.20
영속성 컨텍스트 - 플러시  (0) 2022.09.20

댓글