728x90

객체 매핑

MEMBER 테이블이 존재하고 ID(기본키), NAME, AGE 컬럼이 존재한다는 가정하에 매핑을 해보자

@Entity
@Table(name="MEMBER")
public class Member {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String id;

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

    private Integer age;

    @Column(nullable = false, name = "LAST_MODIFIED_AT")
    private LocalDateTime modifiedAt = LocalDateTime.now();
    
    @Transient
    private String email;
}

매핑 어노테이션

@Entity

지정 클래스를 테이블과 매핑하겠다고 JPA에 전달하는 어노테이션

 

@Table(name = "테이블명")

매핑할 테이블이 어떤 것인지 알려주는 어노테이션

생략 시 클래스 이름(엔티티명)을 테이블명으로 자동 매핑

 

@Id

엔티티 클래스의 기본키를 매핑하는 어노테이션

 

@GeneratedValue(strategy = 사용할 전략 타입)

기본키의 생성전략을 지정해주는 어노테이션이다.

 

GenerationType.AUTO

GenerationType.SEQUENCE

GenerationType.IDENTITY

 

@Column(name = "컬럼명")

엔티티 클래스의 컬럼을 매핑하는 어노테이션

생략 시 필드명을 컬럼명으로 자동 매핑

 

name 속성 외에도

unique, nullable, updatable 등의 속성도 지원한다.

 

@Temporal

java.util.Date / java.util.Calendar 타입으로 매핑하기 위해서 필요한 어노테이션

LocalDateTime을 사용하는 경우에는 생략 가능

LocalDateTime은 TIMESTAMP와 매핑된다.

 

@Transient

테이블과 매핑하지 않는 열을 설정할 때 사용하는 어노테이션

매핑되지 않았기에 데이터베이스에 저장도 되지 않고, 조회도 되지 않는다.

보통 임시 데이터를 사용하기 위한 용도로 사용한다.

 

@Enumerated(EnumType.STRING)

enum 타입과 매핑할 때 사용하는 어노테이션

ORDINAL과 STRING타입을 가질 수 있으며

각각 enum의 순서를 나타내는 숫자 테이블을 저장하거나

enum의 이름을 테이블에 저장한다.

 

STRING 타입을 순서유지를 위해 권장한다.

'Back-End > JPA' 카테고리의 다른 글

엔티티 매핑 : 학습을 위한 스키마 자동 생성하기  (0) 2023.06.19
엔티티 매핑 : 매핑 어노테이션  (0) 2023.06.19
영속성과 엔티티  (0) 2023.06.01
JPA 시작하기  (0) 2023.06.01
JPA  (0) 2023.05.31

+ Recent posts