- 객체와 테이블 매핑
- 데이터베이스 스키마 자동 생성
- 필드와 컬럼 매핑
- 기본 키 매핑
- 실전 예제 - 1. 요구사항 분석 & 기본 매핑
순으로 엔티티 매핑에 대해서 학습해본다.
엔티티 매핑을 먼저 살펴보면
- 객체와 테이블 매핑: @Entity, @Table
- 필드 & 컬럼 매핑 : @Column
- 기본 키 매핑: @Id
- 연관관계 매핑: @ManyToOne, @JoinColumn(ex) 일대다 다대일 다대다 )
@Entity
- @Entity가 붙은 클래스는JPA가 관리, 엔티티라 한다.
- JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수
JPA 스펙상 아래와 같이 @Entity는 규정이 되어있다.
- 기본 생성자(parameter가 없는 public 또는 protected 생성자)
- final 클래스, enum, interface, inner 클래스 사용x
- 저장할 필드에 final 사용 x
(name = "Member") 부분은 JPA가 내부적으로 구분을 해준다.
@Entity(name = "Member")
public class Member {
@Id
private Long id;
private String name;
public Member() {
}
public Member(Long id, String name) {
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setName(String name) { this.name = name; }
}
@Table - 엔티티와 매핑할 테이블 지정
만약에 테이블을 다른이름으로 매핑을 하고 싶으면 @Table을 쓰면된다.
아래와 같이 쓰면 DB에 MBR이라는 테이블과 매핑을 하게된다.
@Entity
@Table(name = "MBR")
public class Member {
@Id
private Long id;
private String name;
public Member() {
}
public Member(Long id, String name) {
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String name() {
return name;
}
public void setName(String name) { this.name = name; }
}
실행을 하게되면 from절이 MBR이라고 되어있다.
Hibernate:
select
member0_.id as id1_5_0_,
member0_.name as name2_5_0_
from
MBR member0_
where
member0_.id=?
<출처 김영한: 자바 ORM 표준 JPA 프로그래밍 - 기본편 >
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
'Spring > JPA' 카테고리의 다른 글
필드와 컬럼 매핑 (0) | 2022.04.14 |
---|---|
데이터베이스 스키마 자동 생성 (0) | 2022.04.14 |
지연 로딩과 조회 성능 최적화 - 엔티티를 DTO로 변환(페치 조인 최적화) ERROR (0) | 2022.04.12 |
플러시 & 준영속 상태 정리 (0) | 2022.04.12 |
내부 동작 방식 - 영속성 컨텍스트 2 (0) | 2022.04.12 |