Entity Mapping
Entity Mapping
@Entity
도메인 객체를 관계형 데이터베이스 테이블로 매핑할 때 사용되는 어노테이션이다
해당 어노테이션만 사용하는 경우 어노테이션이 적용된 클래스의 이름이 테이블 이름이 된다
@Table 어노테이션을 사용해 테이블 이름을 명시할 수 있다
기본 생성자 필수
@Table
스키마를 지정하거나 테이블 이름을 명시할 수 있다
옵션
name : 매핑 테이블 이름 지정(기본값 : 클래스명)
catalog : DB catalog 매핑 (기능 있는 경우)
schema : DB schema 매핑 (기능 있는 경우)
uniqueContraints : DDL 생성 시 unique 제약 조건 생성
기본키(PK) 매핑
@Id
기본키(PK) 지정한다
@GeneratedValue
기본키(PK) 값을 자동 생성하기 위한 어노테이션
여러 옵션을 통해 기본키 생성 전략 적용할 수 있다
identity : 기본키 생성 처리를 데이터베이스에 위임
sequence : 시퀀스를 이용한 기본키 생성
table : 별도의 기본키 테이블을 이용해 기본키 생성
auto : 데이터베이스에 따라 기본키 전략 선택
identity
새로운 데이터가 생성될 때 PK 값이 부여된다
-> 영속 객체로 올리는 시점 (persist())에 insert가 진행되고 생성된 Id를 반환 받아 1차 캐시에서 관리되는 영속 객체의 Id값으로 저장된다
sequence
데이터베이스의 Sequence 객체를 이용해 기본키를 생성하는 방식이다
시퀀스를 생성할 경우 @SequenceGenerator 옵션 필요하며 이미 데이터베이스에 존재하는 시퀀스를 이용할 경우 id 필드 위에 선언
새로운 데이터가 생성될 때 시퀀스 값을 조회한 뒤 해당 값을 Id로 지정하여 데이터가 저장된다
-> 영속 객체로 올리는 시점 (persist())에는 시퀀스 조회 쿼리가 발생하고 insert는 commit 시점에 발생한다
allocationSize 옵션을 통해 시퀀스 값을 가져와 캐싱할 수 있다