김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다.
4. 엔티티 매핑
@Entity
- 테이블과 매핑할 엔티티에 붙이는 어노테이션 입니다.
주의사항
- 기본 생성자 필수
- final class, inner class, enum, interface 사용 불가
- final 키워드 사용 불가
@Table
- 엔티티와 매핑할 테이블 지정 (생략 시, 엔티티 이름과 동일한 테이블)
속성
name | 매핑할 테이블 이름 |
catalog | catalog 기능이 있는 데이터베이스에서 catalog를 매핑함 |
schema | schema 기능이 있는 데이터베이스에서 schema를 매핑함 |
uniqueConstraints | DDL 생성 시에 유니크 제약조건을 만듬 |
@Column
- 컬럼 제약조건 설정
속성
name | 컬럼 이름 |
nullable | null값 허용 여부 |
unique | unique constraint 설정 |
columnDefinition | 컬럼 정보를 전달합니다. |
length | 문자 길이 제약 조건 |
precision | 유효소수점: 소수점을 포함한 전체 자리수 |
scale | 유효소수점: 소수의 자리수 |
기타 컬럼 매핑
@Enumerated | enum 타입을 매핑할 때 사용합니다. - 해당 타입의 값을 어떤 타입으로 데이터베이스에 저장할 것인지 결정합니다. |
EnumType.ORDINAL EnumType.STRING |
@Temporal | 날짜 타입을 매핑할 때 사용합니다. | TemporalType.DATE TemporalType.TIME TemporalType.TIMESTAMP |
@LOB | 대용량 문자열 타입을 매핑할 때 사용합니다. | BLOB or CLOB |
@Transient | 테이블에 매핑하지 않을 필드를 표시합니다. | |
@Access | JPA가 엔티티에 접근하는 방식을 지정합니다. | AccessType.FIELD (필드 접근) AccessType.PROPERTY (메서드 접근) |
스키마 자동 생성
spring:
jpa:
hibernate:
ddl-auto: create
속성
create | 새로 생성함 |
create-drop | 애플리케이션 종료 시, create 속성으로부터 생성된 테이블 제거 |
update | (테이블-엔티티 비교) 변경 사항만 수정 |
validate | 테이블 구조와 엔티티 정보간의 불일치 여부 (일관성 검증) - 에러 (애플리케이션 실행 X) |
none | 자동 생성 기능을 사용하지 않습니다. |
@ID
- 데이터베이스의 기본 키를 매핑합니다.
직접 할당
- 사용자가 직접 할당합니다.
자동 할당 (@GeneratedValue)
- 대리키 사용
- 데이터베이스 벤더에게 위임합니다.
속성 (GenerationType)
AUTO | 특정 데이터베이스에 적합한 키 생성 전략을 자동으로 선택합니다. - 데이터베이스 벤더에 독립적으로 코드를 작성할 수 있습니다. |
|
IDENTITY | 기본 키 생성을 데이터베이스 벤더에게 위임합니다. - ID 컬럼을 비워두면 데이터베이스가 자동으로 값을 채웁니다. - 기본키 값을 가져오기 위해 데이터베이스에 추가로 조회 쿼리를 질의합니다. |
MySQL PostgreSQL DB2 SQL Server |
SEQUENCE | 데이터베이스 시퀀스를 사용해서 기본키를 할당합니다. - 유일한 값을 순서대로 생성하는 오브젝트 입니다. |
ORACLE PostgreSQL DB2 H2 |
TABLE | 키 생성 테이블을 사용합니다. |
@SequenceGenerator(
name = "BOARD_SEQ_GENERATOR",
sequenceName = "BOARD_SEQ",
initialValue = 1, allocationSize = 1)
@TableGenerator(
name = "BOARD_SEQ_GENERATOR",
table = "MY_SEQ",
pkColumnValue = "BOARD_SEQ", allocationSize = 1)
)
@GeneratedValue(strategy = GenerationType.______, generator = "BOARD_SEQ_GENERATOR")
'Spring > Spring Data JPA' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] 6. 다양한 연관관계 매핑 (0) | 2023.12.27 |
---|---|
[자바 ORM 표준 JPA 프로그래밍] 5. 연관관계 매핑 기초 (0) | 2023.12.27 |
[자바 ORM 표준 JPA 프로그래밍] 3. 영속성 관리 (0) | 2023.11.28 |
[자바 ORM 표준 JPA 프로그래밍] 2. JPA 시작 (0) | 2023.11.28 |
[자바 ORM 표준 JPA 프로그래밍] 1. JPA 소개 (0) | 2023.11.28 |