Notice
Recent Posts
Recent Comments
Link
yeon's blog
[JPA] 기본적인 매핑 본문
Entity를 설계할 때 항상 사용하는 가장 기본적인 어노테이션들이다!!
공부하는 김에 정리까지~~~
🖇 객체와 테이블 매핑
@Entity
- Table과의 매핑
- @Entity가 붙은 클래스는 JPA가 관리함
💡 속성
- name: JPA에서 사용할 `엔티티 이름` 지정
‼️ 주의사항
1. 기본 생성자(파라미터가 없는 Public 또는 Protected 생성자) 필수!
→ JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하기 때문
2. 엔티티 객체 생성 시 기본 생성자 이용
→ final, enum, interface, inner class 사용 불가
3. @Id와 함께 사용해야 함
→ @Id 어노테이션이 없으면 AnnotaionException 예외 발생
@Table
- Entity와 매핑할 Table을 지정
- 설정 생략 시 매핑한 엔티티 이름을 테이블 이름으로 사용
💡속성
- name: 매핑할 table 이름 설정 → 디폴트: Entity명
- catalog: catalog 매핑(DB에 catalog 기능이 있어야 함) → 디폴트: DB명
- schema: schema 매핑(DB에 schema 기능이 있어야 함)
- uniqueConstrains: DDL 생성 시 unique 제약조건을 거는 것
🖇 기본 키 매핑
@Id
- Entity 필드를 기본 키(PK, Primary key)에 매핑
- 영속성 컨텍스트는 엔티티를 식별자 값으로 구분하기 때문에, 엔티티를 영속 상태로 만들기 위해 식별자 값이 반드시 필요!
- 기본타입(int, String)이나 기본 래퍼타입(Long, Integer)을 기본키로 지정
→ 객체에 Null이 들어갈 수 있으므로 래퍼타입(Long, Integer)를 사용하는 것을 권장함
@GeneratedValue
- 기본 키 자동생성
- 기본은 AUTO로 설정되어 있음
💡 속성
- AUTO (default)
- persistence provider가 특정 DB에 맞게 자동 선책
- ex) Oracle - SEQUENCE, MySQL - IDENTITY
- IDENTITY
- 기본 키 생성을 DB에 위임
- MySQL, PostgreSQL, SQL Server, D2에서 사용 가능
- SEQUENCE
- DB 시퀀스를 사용해 기본키 할당
- Oracle, PostgreSQL, DB2, H2에서 사용 가능
- TABLE
- 키 생성 전용 테이블을 만들어 SEQUENCE처럼 사용
- @TableGenerator 필요
🖇 필드와 DB 컬럼 매핑
@Column
- Entity 필드를 Table 칼럼에 매핑
💡 속성
- name
- Table 칼럼명 설정 → 디폴트: 필드 이름
- nullable
- true: nullable (default)
- false: not null
- length
- 문자 길이 제약 조건 → 디폴트: 255
- String 타입에서만 적용 가능
- unique
- 한 컬럼에 간단히 유니크 제약조건을 만들 때 사용
- @Table의 uniqueConstraints와 동일
- columnDefinition
- DB의 컬럼 정보 직접 설정
@Column 이외에 아래처럼 다양한 매핑 어노테이션이 존재한다!
'JPA' 카테고리의 다른 글
[JPA] 연관관계 (0) | 2023.12.27 |
---|---|
[JPA] JPA-DDL 설정 (0) | 2023.12.12 |