티스토리 뷰

JPA

엔티티와 테이블 매핑

nswon 2022. 4. 4. 19:13

JPA를 사용하는데 있어서 가장 중요한 것은 엔티티와 테이블을 정확히 매핑시키는 것이다.

따라서 매핑 어노테이션을 잘 숙지하고 사용할 수 있어야 한다.

다양한 매핑 어노테이션을 지원하는데, 크게 4가지로 분류할 수 있다.

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

 

 

1. @Entity

@Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라 부른다.

속성 기능 기본값
name JPA에서 사용할 엔티티 이름을 지정한다. 보통 기본값인 클래스 이름을 사용한다. 설정하지 않으면 클래스 이름을 그대로 사용한다.

 

1-1 @Entity 적용 시 주의해야할 사항

  • 기본 생성자는 필수다.(예: public Member() {})
  • final, enum, interface, inner 클래스에서는 사용할 수 없다.(예: final class Member{})
  • 저장할 필드에 final을 사용하면 안된다.(예: private final String data;)

 

자바는 생성자가 하나도 없으면 기본 생성자를 자동으로 만들어 주지만, 기본 생성자 이외에 생성자를 하나 이상 만들게 되면 자바는 기본 생성자를 자동으로 만들지 않는다. 따라서 아래와 같이 기본 생성자를 직접 만들어야 한다.

 

public Member() {} //기본생성자를 직접 만듬

//임의의 생성자
public Member(String name) {
	this.name = name;
}

 

 

2. @Table

@Table은 데이터베이스의 테이블 이름과 매핑할 때 주로 사용한다.

속성 기능 기본값
name 매핑할 테이블 이름 엔티티 이름을 사용한다.
catalog catalog 기능이 있는 데이터베이스에서 catalog를 매핑한다.  
schema schema 기능이 있는 데이터베이스에서 schema를 매핑한다.  
uniqueConstraints
(DDL)
DDL 생성 시에 유니크 제약조건을 만든다. DDL을 만들 때만 사용된다.  

 

3. ETC

이름 매핑 전략 변경하기

단어와 단어를 구분할 때 객체는 관례상 카멜 표기법을 주로 사용하고, 데이터베이스는 스네이크, 즉 언더스코어 표기법을 사용한다. 

 

카멜 표기법
memberName

언더스코어
member_name

 

'JPA' 카테고리의 다른 글

패러다임의 불일치  (0) 2022.07.18
JPA가 생겨난 이유  (0) 2022.07.09
객체에서 IDENTITY 전략으로 쉽게 기본 키 매핑  (0) 2022.04.05
영속성 컨텍스트 개념과 원리  (0) 2022.04.04
연관관계 방향 설정하기  (0) 2022.04.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday