본문 바로가기

Jpa

엔티티 매핑 (필드, 컬럼)

엔티티 매핑 종류

●  객체와 테이블 매핑 - @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

 

 

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

'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