BE전문가 프로젝트

필드와 컬럼 매핑 본문

JPA

필드와 컬럼 매핑

원호보고서 2022. 10. 5. 22:59

예시

요구사항

1. 회원은 일반 회원과 관리자로 구분해야 한다.

2. 회원 가입일과 수정일이 있어야 한다.

3. 회원을 설명할 수 있는 필드가 있어야 한다. 이 필드는 길이 제한이 없다.

 

package hellojpa;

import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.util.Date;

@Entity
@NoArgsConstructor
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;


}
Annotation 설명
@Column 컬럼 이름을 다르게 사용하고 싶을 때 사용
@Enumerated Enum 타입을 사용할 때 사용
@TemporalType - Date, Time, TimeStampDate 세가지가 있다.
- DB에서는 날짜와 시간을 구분하여 사용하기 때문에 각자 알맞게 사용한다.
@Lob - Varchar를 넘어서는 큰 단위를 사용할 때 사용
- Brop, Crop
@Transient 특정 필드를 DB 컬럼에 포함하고 싶지 않을 때 사용

 

@Column

속성 설명 기본값
name 필드와 매핑할 테이블의 컬럼 이름 객체의 필드 이름
insertable
updatable
등록, 변경 가능 여부 true
nullable(DDL) null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다  
unique(DDL) @Table의 umiqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다.

하지만 랜덤으로 설정되기 때문에 잘 사용하지 않고 @Table(uniquueConstraints)를 자주 사용한다.
 
columnDefinition 데이터베이스 컬럼 정보를 직접 줄 수 있다.
ex) varchar(100) default 'EMPTY'
필드의 자바 타입과
방언 정보를 사용
length(DDL) 문자 길이 제약조건, String 타입에만 사용한다 255
precision,
scale(DDL)
BigDecimal 타입에서 사용한다(BigInteger에서도 사용)
precicion은 소수점을 포함한 전체 자릿수를 scale을 소스와 자릿수다. 
참고로 double, float 타입에는 적용되지 않는다.
정밀한 소수를 다루어야 할 때만 사용
percision=19

 

@Enumerated

자바 enum 타입을 매핑할 때 사용

  설명 기본값
EnumType.ORDINAL enum 순서를 데이터베이스에 저장(사용하지 않는 것을 권장) EnumType.ORDINAL
EnumType.STRING enum 이름을 데이터베이스에 저장

 

@Temporal

날짜 타입을 매핑할 때 사용

 

LocalDate, LocalDateTime을 사용할 떄는 생략 가능(최신 하이버네이트 지원)

속성 설명
TemporalType.DATE 날짜, 데이터베이스 date 타입과 매핑
TemporalType.TIME 시간, 데이터베이스 time 타입과 매핑
TemporalType.TIMESTAMP 날짜와 시간, 데이터베이스 timestamp타입과 매핑

 

@Lob

데이터베이스 BLOP, CLOP 타입과 매핑

  • @LOB에는 지정할 수 있는 속성이 없다.
  • 매핑하는 필드 타입이 문자면 CLOB매핑, 나머지 BLOB 매핑
속성 설명
CLOB String, char[], java.sql.CLOB
BLOB byoe[], java.sql.BLOB

'JPA' 카테고리의 다른 글

쇼핑몰 만들기 1. 요구사항 분석과 기본 매핑  (0) 2022.10.09
기본 키 매핑  (0) 2022.10.08
데이터베이스 스키마 자동 생성  (0) 2022.10.03
객체와 테이블 매핑  (0) 2022.10.03
준영속 상태  (0) 2022.09.25
Comments