yeon's blog

[JPA] 기본적인 매핑 본문

JPA

[JPA] 기본적인 매핑

yeonii 2023. 12. 27. 13:33

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