본문 바로가기

강의/자바 ORM 표준 JPA

필드와 컬럼 매핑

@Entity
public class Member {
    @Id
    private Long id;
    
    @Column(name = "name")
    private String username;
    
    private Integer age;
    
    @Enumerated(EnumType.STRING)
    private RoleType roleType;
    
    
    @Lob
    private String description;
    //Getter, Setter…
    
    @Transient
    private Long temp;
}

 

어노테이션  설명
@Column 컬럼 매핑, db 컬럼의 이름을 변경할 수 있다.
@Enumerated(EnumType.STRING) enum 타입 매핑
EnumType.ORDINAL이 default이지만 사용하지 않는다.
EnumType.ORDINAL: enum 순서를 데이터베이스에 저장 •
EnumType.STRING: enum 이름을 데이터베이스에 저장
@Lob BLOB, CLOB 매핑 ,
varchar을 넘어서는 매우 큰 컨텐츠를 넣을 때 사용 (String이면  clob)
@Transient  특정 필드를 컬럼에 매핑하지 않음(매핑 무시)
db와 관계없이 메모리에서만 계산을 할 예정인 경우

 

 @Column

     
name 필드와 매핑할 테이블의 컬럼 이름 객체의 필드 이름
insertable, updatable 등록, 변경 가능 여부
(updatble= false로 지정을 하면 JPA를 활용해서는 변경할 수 없다.)
TRUE
nullable(DDL) null 값의 허용 여부를 설정한다.
false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다.
 
unique(DDL) 잘 사용하지 않는다.
@Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제 약조건을 걸 때 사용한다.
 
columnDefinition (DDL) 데이터베이스 컬럼 정보를 직접 줄 수 있다.
ex) varchar(100) default ‘EMPTY'
 
length(DDL) 문자 길이 제약조건, String 타입에만 사용한다. 255
precision, scale(DDL) BigDecimal 타입에서 사용한다(BigInteger도 사용할 수 있다).
precision은 소수점을 포함한 전체 자 릿수를, scale은 소수의 자릿수다.
참고로 double, float 타입에는 적용되지 않는다.
아주 큰 숫자나 정 밀한 소수를 다루어야 할 때만 사용한다.
precision=19, scale=2