Spring/JPA

엔티티 매핑 - 객체와 테이블 매핑

느리지만 꾸준하게 2022. 4. 14. 03:11
  • 객체와 테이블 매핑
  • 데이터베이스 스키마 자동 생성
  • 필드와 컬럼 매핑
  • 기본 키 매핑
  • 실전 예제 - 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

 

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

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

www.inflearn.com