Search
Duplicate
📒

[JPA 기본] 04-1. 엔티티 맵핑 - 객체와 테이블, 필드와 컬럼 맵핑

상태
완료
수업
JPA
주제
JPA
4 more properties
참고

객체와 테이블 매핑

NOTE
JPA를 사용하는데 가장 중요한 일은 EntityTable을 정확히 맵핑하는 것이다.
객체와 테이블 매핑 : @Entity, @Table
기본 키 매핑 : @Id
필드와 컬럼 매핑 : @Column
연관관계 매핑 : @ManyToOne, @JoinColumn

@Entity, @Table

NOTE

@Entity

JPA를 사용해서 Table과 맵핑할 클래스는 @Entity를 꼭 붙여야한다!
기본 생성자가 필수로 있어야 한다.
final 클래스, ENUM, interface, inner 클래스에는 사용할 수 없다.
저장할 필드에 final을 사용하면 안된다.

@Table

Entity와 맵핑할 Table을 지정한다.
생략하면 맵핑한 Entity이름을 테이블 이름으로 사용한다.

필드와 컬럼 매핑

@Enumerated

NOTE
@Enumerated (EnumType. STRING) private RoleType roleType;
Java
복사
EnumType.ORDINAL
enum에 정의된 순서대로 ADMIN은 0, USER는 1 값이 데이터베이스에 저장된다.
주의 : 이미 저장된 enum의 순서를 변경할 수 없다
만약 새로운 enum이 추가되면서, ADMIN이 1로 밀려도 데이터베이스는 0을 간직한다.
EnumType.STRING
enum 이름 그대로 ADMIN은 ‘ADMIN’, USER는 ‘USER’라는 문자로 저장된다.
장점 : 저장된 enum의 순서가 바뀌거나 추가되어도 안전하다

@Temporal

NOTE
@Temporal (TemporalType. TIMESTAMP) private Date createdDate; @Temporal (TemporalType. TIMESTAMP) private Date lastModifiedDate; public enum RoleType { ADMIN, USER }
Java
복사
날짜 타입(Date, Calendar)을 매핑할 떄 사용한다.
LocalDate(년월), LocalDateTime(년월일)을 사용할 때는 생략 가능 (최신 하이버네이트 지원)

@Temporal

NOTE
@Temporal (TemporalType. TIMESTAMP) private Date createdDate; @Temporal (TemporalType. TIMESTAMP) private Date lastModifiedDate;
Java
복사
날짜 타입(Date, Calendar)을 매핑할 떄 사용한다.
LocalDate(년월), LocalDateTime(년월일)을 사용할 때는 생략 가능 (최신 하이버네이트 지원)

@Lob, @Transient

NOTE
@Lob private String description;
Java
복사
데이터베이스 BLOB, CLOB 타입과 매핑
@Transient private int tmp_number;
Java
복사
필드 매핑이 안되게 하는 어노테이션

@Column

NOTE
@Column (name = "ID") private String id;
Java
복사
속성
name : 필드와 매핑할 테이블 컬럼의 이름
insertable, updatable : 등록, 변경 가능여부
nullable : null 허용여부
unique : 한 컬럼에 간단한 unique걸 떄 사용
사용빈도가 낮고, 테이블에서 @Table(uniqueConstraint())를 사용하는 걸 권장
이렇게 해야 유니크제약에 이름을 줄 수 있기 때문.
columnDefinition : 컬럼 정보를 직접 줄 수 있다.
length : 문자 타입 길이 제약조건
precision, scale(DDL) : BigDecimial 타입에서 사용한다.