티스토리 뷰

jpa

[JPA] @Entity(엔티티 매핑)

구삼칠오 2021. 12. 24. 13:13

JPA는 자바 ORM기술의 표준이고 ORM(Object Relational Mapping)은 이름 그대로 객체과 관계형 데이터 베이스를 연결해 주는 기술입니다. 따라서 JPA는 class와 table을 연결해주는 기능을 제공하고 있는데 이는 여러가지 어노테이션으로 어렵지 않게 이용할 수 있습니다.

 

@Entity

class에 @Entity을 붙임으로서 JPA가 관리하는 엔티티 클래스라는 것을 명시해줄 수 있습니다. 테이블과 매핑될 클래스에는 필수로 붙여줘야 합니다. 주의 할 점은 다음과 같습니다.

  1. public 혹은 protected의 접근 제한자를 가진 기본생성자가 필하다는 것
  2. final 클래스, enum, inner, interface 클래스에는 상용할 수 없다는 것
  3. final이 붙은 필드는 테이블에 저장되지 않는다는 것

단 생성자의 경우, 아무런 생성자를 정의 하지 않은 클래스는 기본 생성자를 자동으로 만들어 사용하기 때문에 생략가능 합니다. @Entitiy에는 name 속성이 있어 JPA에서 사용할 엔티티의 이름을 지정할 수 있습니다.

 

 

@Table

엔티티 클래스에 @Table을 붙임으로서 매핑할 테이블을 지정할 수 있습니다.

  • name: 매핑할 테이블 이름 (default: Entity이름)
  • catalog: catalog 매핑
  • schema: schema 매핑
  • uniqueConstraints: ddl 생성시 유니크 제약 조건 생성

 

@Id, @GeneratedValue

기본키를 매핑합니다. @GeneratedValue를 함께 사용할 경우 기본키 자동생성 기능을 사용할 수 있습니다.

@GeneratedValue strategy:

  • TABLE: 키 생성용 테이블을 만들어 사용
  • SEQUENCE: 시퀀스 오브젝트 사용
  • IDENTITY: 데이베이스에 위임 [ex: Mysql의 경우 auto increment]
  • AUTO: 데이터베이스에 따라 자동 지정 (default)

 

@Colummn

엔티티의 필드가 테이블의 컬럼과 어떻게 매핑 될것인지 명시해줍니다.

  • name: 매핑될 컬럼의 이름 (default: 필드 이름 snake case)
  • nullable: nullable 여부 (default: true)
  • uniqe: uniqu 여부
  • length: String 길이 제한 (default: 255)

 

@Enumerated

enum 타입과 매핑할 때 사용합니다.

  • value:
    • ORDINAL: enum의 순서를 저장
    • STRING: enum case의 이름을 저장

 

@Temporal

시간과 관련된 타입을 매핑할때 사용합니다.

  • value: 
    • DATE: db의 date와 매핑
    • TIME: db의 time과 매핑
    • TIMESTAMP: timestamp와 매핑

 

 

ref.

자바 ORM 표준 JPA 프로그래밍 - 기본편

자바 ORM 표준 JPA 프로그래밍

'jpa' 카테고리의 다른 글

[JPA] Entity 연관관계  (0) 2022.01.06
[JPA] JPA와 영속성 컨텍스트(Persistence Context)에 대해  (0) 2021.12.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함