객체 매핑
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 |