엔티티 매핑 종류
● 객체와 테이블 매핑 - @Entity, @Table
● 필드와 컬럼 매핑 - @Column
● 기본 키 매핑 - @Id
● 연관관계 매핑 - @ManyToOne, @JoinColumn
@Entity
- @Entity가 붙은 클래스는 JPA가 관리,엔티티라 한다.
- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수
- 주의사항
1. 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
2. final 클래스, enum, interface, inner 클래스 사용 X
3. 저장할 필드에 final 사용 X
@Entity
public class Member {
@Table
- 엔티티와 매핑할 테이블 지정
@Table(name = "ORDER")
@Column
● name - 필드와 매핑할 테이블의 컬럼 이름 (기본값 = 객체의 필드 이름)
● insertable, updateable - 등록, 변경 가능여부 ( 기본값 = 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)
@Column(
name = "",
insertable = false,
updatable = false,
nullable = false,
unique = true,
columnDefinition = "varchar(100)",
length = 10,
precision = 1,
scale = 1
)
@Enumerated
● 자바 enum 타입을 매핑할 때 사용
● ORDINAL 사용 X
● ORDEINAL - enum 순서를 데이터베이스에 저장
● STRING - enum 이름을 데이터베이스에 저장
● 기본값 - ORDINAL
@Enumerated(EnumType.STRING)
@Temporal
● LocalDate, LocalDateTime을 사용할 때 생략 가능
● DB에는 date, time, timestamp 이렇게 날짜, 시간, 날짜와시간을 나타내는 값이 있는데 기존 java의 Date를 사용할땐 temporal로 어떤 type인지 정해주어야 함
@Temporal(TemporalType.TIMESTAMP)
@Lob
● 데이터 베이스는 BLOC, CLOB 타입과 매핑된다.
● 지정할 수 있는 속성이 없다.
● 매핑하는 필드 타입이 문자면 CLOB, 나머지는 BLOB 매핑된다.
@Lob
@Transient
● 필드 매핑x
● 데이터베이스에 저장,조회 x
● 주로 메모리상에서만 임시로 어떤 값을 보관할때 사용
@Transient
'Jpa' 카테고리의 다른 글
JPA 프록시의 특징 (0) | 2024.07.06 |
---|---|
연관관계 매핑 (1) | 2024.07.02 |
기본 키 매핑 (@ID, @GeneratedValue) (0) | 2024.07.02 |
영속성 컨텍스트 (0) | 2024.07.02 |
JPA application.yml 설정 (0) | 2024.07.01 |