프레임워크(Framework)/JPA

[JPA] 객체와 테이블 간의 매핑 - 엔티티 매핑(Entity Mapping) - 1

잇트루 2022. 11. 28. 21:35
반응형
본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다.
'자바 ORM 표준 JPA 프로그래밍 - 기본편'
 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

Intro

엔티티 매핑과 연관관계 매핑

JPA를 이용해 데이터베이스의 테이블과 상호 작용(데이터 저장, 수정, 조회, 삭제 등) 하기 위해 먼저 해야 하는 작업은 데이터베이스 테이블과 엔티티 클래스 간의 매핑 작업이다.

 

엔티티 매핑 작업은 객체와 테이블 간의 매핑, 기본키 매핑, 필드와 컬럼 간의 매핑, 엔티티 간의 연관 관계 매핑 등으로 나눌 수 있다.

 

특히 엔티티 간의 연관 관계 매핑은 JPA에서 가장 어려우면서도 중요하다.

 

엔티티 매핑

  • 객체와 테이블 간의 매핑 : @Entity, @Table
  • 필드와 컬럼 간의 매핑 : @Column
  • 기본 키 매핑 : @Id
  • 연관관계 매핑 : @ManyToOne, @JoinColumn, @OneToMany, @ManyToMany

 

엔티티와 테이블 간의 매핑 - @Entity, @Table

@Entity

@Entity 매핑 어노테이션을 통해 엔티티 클래스와 테이블을 매핑할 수 있다.

@Entity가 붙은 클래스는 JPA가 관리하게 되며, 엔티티라 부른다.

@Entity
public class Member {
}

@Entity(name = "Member2")
public class Member {
}

속성

  • name
    • 엔티티 이름을 설정할 수 있다.
    • 기본 값으로 클래스의 이름을 그대로 사용한다.
    • 같은 클래스 이름이 없으면 가급적 기본값을 사용한다.

 

 

주의할 점

  • 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자)
  • final 클래스, enum, interface, inner 클래스에 사용 X
  • 저장할 필드에 final 사용 X

 

@Table

@Table은 엔티티와 매핑할 테이블을 지정한다.

@Entity
@Table
public class Member {
    @Id
    private Long memberId;
}

속성

  • name
    • 테이블 이름을 설정할 수 있다. 기본 값으로 클래스의 이름을 테이블로 사용한다.
    • 주로 테이블 이름이 클래스 이름과 달라야 할 경우에 사용
  • catalog
    • 데이터베이스 catalog와 매핑한다.
  • schema
    • 데이터베이스 schema와 매핑한다.
  • uniqueConstraints(DDL)
    • DDL 생성 시에 유니크 제약 조건을 생성한다.

 

 

주의할 점

  • @Table 어노테이션은 필수가 아니지만, @Eintity 어노테이션과 @Id 어노테이션은 필수이다.
  • @Eintity와 @Id는 함께 사용해야 한다. @Id 어노테이션이 없으면 AnnotationException 예외가 발생한다.
  • 파라미터가 없는 기본 생성자는 필수로 추가해야 한다.
    • Spring Data JPA의 기술을 적용할 때, 기본 생성자가 없는 경우 에러가 발생할 수 있기 때문
반응형