hoondev

[Spring JPA] 필드와 컬럼 매핑 본문

Spring JPA

[Spring JPA] 필드와 컬럼 매핑

hoondev3 2023. 1. 21. 14:56
package hellojpa;
import javax.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

@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;
    //Getter, Setter… 
}

 

매핑 어노테이션 정리

어노테이션 설명
@Column  컬럼 매핑
@Temporal 날짜 타입 매핑
@Enumerated enum 타입 매핑
@Lob BLOB, CLOB 매핑
@Transienrt 특정 필드를 컬럼에 매핑하지 않음(매핑 무시)

 

@Column

  • name: 필드와 매핑할 테이블의 컬럼 이름 (기본값: 객체의 필드 이름)
  • insertable, updatable: 등록, 변경 가능 여부 (기본값: 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)

 

@Enumerated

  • value:
    • EnumType.ORDINAL: enum 순서를 데이터베이스에 저장,
    • EnumType.STRING: enum 이름을 데이터베이스에 저장 
    • (기본값: EnumType.ORDINAL)

 

@Temporal

  • value:
    • TemporalType.DATE: 날짜, 데이터베이스 date 타입과 매핑 (예: 2013–10–11)
    • TemporalType.TIME: 시간, 데이터베이스 time 타입과 매핑 (예: 11:11:11)
    • TemporalType.TIMESTAMP: 날짜와 시간, 데이터베이 스 timestamp 타입과 매핑(예: 2013–10–11 11:11:11)

 

@Lob

매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지는 BLOB 매핑

  • CLOB: String, char[], java.sql.CLOB
  • BLOB: byte[], java.sql. BLOB

 

Reference

https://www.inflearn.com/course/ORM-JPA-Basic

 

Comments