✔️ 객체와 테이블 매핑
@Entity
클래스에 붙이는 애노테이션
해당 클래스는 엔티티로써 JPA가 관리
JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수
- 기본 생성자 필수 (public | protected)
- final 클래스, enum, interface, inner 클래스 사용 불가
- 저장할 필드에 final 사용 x
- 엔티티 객체는 리플렉션으로 (기본 생성자 + 필드 값 주입 방식) 생성한다. 그런데 final 필드로 선언해버리면 리플렉션을 통한 값 주입이 불가능해진다.
💠 속성
name : JPA에서 사용할 엔티티 이름 지정, Default : 클래스 이름 그대로 사용
@Table
@Table 은 엔티티와 매핑할 테이블 지정
속성 | 기능 | 기본값 |
name | 매핑할 테이블 이름 | 엔티티 이름을 사용 |
catalog | 데이터베이스 catalog 매핑 | |
schema | 데이터베이스 schema 매핑 | |
uniqueConstraints(DDL) | DDL 생성 시에 유니크 제약 조건 생성 |
💠 데이터베이스 스키마 자동 생성
- DDL을 애플리케이션 실행 시점에 자동 생성
❗ 단, 생성된 것은 운영서버에서 사용하면 안된다.
생성된 것을 다듬거나 직접 스크립트를 짜서 만들 것
// application.properties
jpa.hibernate.ddl-auto
옵션 | 설명 |
create | 기존 테이블 삭제후 다시 생성 |
create-drop | create와 같으나 종료시점에 테이블 drop |
update | 변경사항만 반영 (운영DB에 사용 금지) |
validate | 엔티티와 테이블이 정상 매핑되어있는지만 확인 |
none | x |
운영 장비에는 validate | none 사용 할 것
✔️ 필드와 컬럼 매핑
@Coulumn : 필드 매핑
속성 | 설명 | 기본값 |
name | 필드와 매핑할 테이블의 컬럼 이름 | 객체의 필드 이름 |
insertable, updatable | 등록, 변경 가능 여부 | True |
nullable(DDL) | null 값 허용 여부 설정 false : not null 제약 조건이 붙음 |
|
unique(DDL) | 컬럼에 간단히 유니크 제 약조건을 걸 때 사용 | |
columnDefinition (DDL) | 데이터베이스 컬럼 정보를 직접 준다. ex) varchar(10) default 'Emtpy' |
필드의 자바 타입과 방언 정보를 사용 |
length(DDL) | 문자 길이 제약 조건, String 타입에만 사용 | 255 |
precision, scale(DDL) |
BigDecimal, BigInteger 타입에서 사용 precision은 소수점을 포함한 전체 자릿수, scale은 소수의 자릿수 참고) double, float 타입에는 적용x 아주 큰 숫자나 정밀한 소수를 다루어야 할때만 사용 |
precision = 19 scale = 2 |
@Enumerated : enum 타입 매핑
속성 | 설명 | 기본값 |
value | EnumType.ORDINAL : enum 순서를 DB에 저장 EnumType.STRING : enum 이름을 DB에 저장 |
EnumType.ORDINAL |
절대절대 ORDINAL 사용 X
✔️ 기본 키 매핑
@Id : id key 필드에 붙인다.
@GeneratedValue : 기본 키 값 자동 생성 기능
- IDENTITY : 데이터베이스에 위임 (MYSQL)
- SEQUENCE : 데이터베이스 시퀸스 오브젝트 사용
- @SequenceGenerator 필요
- TABLE : 키 생성용 테이블 사용 , 모든 DB에서 사용
- @TableGenerator 필요
- AUTO : 방언에 따라 자동 지정, Default
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
IDENTITY 전략 : em.persist() 시점에 즉시 INSERT SQL 실행하고 DB에서 식별자를 조회
- 이 덕분에 저장한 엔티티의 getId하여 ID값을 얻을 수 있음
기본 키 제약 조건 : null X, 유일, 변함없어야 함
Long형 + 대체키 + 키 생성 전략 사용
🔖 학습내용 출처
'Back-End > JPA' 카테고리의 다른 글
JPA - 1:N 단방향과 양방향에 대해서 (0) | 2024.07.09 |
---|---|
JPA - 다양한 연관관계 매핑 (0) | 2024.07.09 |
JPA - 연관관계 매핑 기초 (0) | 2024.07.05 |
JPA - 영속성 관리 (0) | 2024.07.01 |
JPA 소개 (0) | 2024.07.01 |