본문 바로가기
프로그래밍/spring

[JPA] 엔티티와 매핑 - 1

by 혀끄니 2023. 7. 20.
728x90

@Entity

- 테이블과 매핑

- @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라고 불림

속성

Name : JPA에서 사용할 엔티티 이름을 지정, 보통 기본값인 클래스 이름을 사용

주의사항

- 기본 생성자는 필수(JPA가 엔티티 객체 생성 시 기본 생성자를 사용)

- final 클래스, enum, interface, inner class에는 사용할 수 없음

- 저장할 필드에 final 사용불가

@Table

- 엔티티와 매핑할 테이블 지정

- 생략 시 매핑한 엔티티 이름을 테이블 이름으로 사용

속성

Name : 매핑할 테이블 이름 (default. 엔티티 이름 사용)

Catalog : catalog 기능이 있는 DB에서 catalog를 매핑 (default. DB명)

Schema : schema기능이 있는 DB에서 schema를 매핑

uniqueConstraints : DDL 생성시 유니크 제약조건을 만듬, 스키마 자동 생성 기능을 사용해서 DDL을 만들때만 사용

@Id

- 해당 엔티티를 기본키로 할당

@GeneratedValue

IDENTITY : 기본키 생성을 데이터베이스에 위임( = AUTO_INCREMENT)

SEQUENCE : 데이터베이스 시퀀스를 사용해서 기본 키를 할당

데이터베이스 시퀀스에서 식별자 값을 획득한 후 영속성 컨텍스트에 저장

유일한 값을 순서대로 생성

TABLE : 키 생성 테이블을 사용, 데이터베이스 시퀀스유사

AUTO : 선택한 데이터베이스에 따라 기본키를 자동으로 선택

@column

- 객체 필드를 테이블 컬럼에 매핑

- name, nullable이 주로 사용

속성

name : 필드와 매핑할 테이블 컬럼 이름(default. 객체의 필드 이름)

nullable : null값의 허용 여부 설정, false 설정 시 not null (default. true)

unique : @Table의 uniqueConstraints 와 같지만 한 컬럼에 간단히 유니크 제약조건을 적용

columnDefinition : 데이터베이스 컬럼 정보를 직접 줄 수 있음

length : 문자 길이 제약조건, String타입에만 사용

precision, scale : BigDecimal, BigInteger타입에서 사용, 아주 큰 숫자나 정밀한 소수를 다룰 떄만 사용

@Enumerated

- 자바의 enum타입을 매핑할 때 사용

속성

value : EnumType.ORDINAL : enum 순서를 데이터베이스에 저장(숫자로 저장)

EnumType.STRING : enum 이름을 데이터베이스에 저장(문자열 자체 저장)

 

728x90