[JPA] 객체 매핑

객체 매핑을 위해 회원 테이블과 회원 클래스를 작성하자.

 

- 회원 테이블

CREATE TABLE MEMBER (
    ID VARCHAR(255) NOT NULL, -- 아이디(기본키)
    NAME VARCHAR(255),        -- 이름
    AGE INTEGER,              -- 나이
    PRIMARY KEY (ID)
)

 

- 회원 클래스

public class Member {
    private String id;
    private String username;
    private Integer age;
    
    //Getter, Settet
    public String getId() { return id; }
    public void setId(String id) { this.id = id; }
    
    public String getUsername() { return username; }
    public void setUsername(String username) {
        this.username = username;
    }
    
    public Integer getAge() { return age; }
    public void setAge(Integer age) { this.age = age; }
}

 

JPA를 사용하기 위해서는 가장 먼저 클래스와 테이블을 매핑해야 한다. 여기서는 회원 클래스와 회원 테이블을 매핑해야 한다.

매핑 정보는 다음과 같다.

매핑 정보 회원 객체 회원 테이블
클래스와 테이블 Member MEMBER
기본 키  id ID
필드와 컬럼 username NAME
필드와 컬럼 age AGE

 

이제 회원 클래스에 JPA가 제공하는 매핑 어노테이션을 추가하자.

- 매핑 정보가 포함된 회원 클래스

import javax.persistence.*;

@Entity
@Table(name = "MEMBER")
public class Member {

    @Id
    @Column(name = "ID")
    private String id;
    
    @Column(name = "NAME")
    private String username;
    
    // 매핑 정보가 없는 필드
    private Integer age;
    
    ...
    
}

회원 클래스에 사용된 매핑 어노테이션을 하나씩 살펴보자.

@Entity

이 클래스를 테이블과 매핑한다고 JPA에게 알려준다. 이렇게 @Entity가 사용된 클래스를 엔티티 클래스라고 한다. 

@Table

엔티티 클래스에 매핑할 테이블 정보를 알려준다. 여기서는 name 속성을 사용해 Member 엔티티를 MEMBER 테이블에 매핑했다. 이 어노테이션을 생략한다면 클래스 이름을 테이블 이름으로 매핑한다.

@Id

엔티티 클래스의 필드를 테이블의 기본 키(PK)에 매핑한다. 이렇게 @Id가 사용된 필드를 식별자 필드라 한다. 

@Column

필드를 컬럼에 매핑한다. 여기서는 name 속성을 사용해 Member 엔티티의 username 필드를 MEMBER 테이블의 NAME 컬럼에 매핑했다. 

 

만약 필드에 매핑 정보가 없다면(생략한다면) 필드명을 사용해서 컬럼명으로 매핑한다. 

 

위의 모든 매핑을 그림으로 간단하게 표현한다면 다음이 나타낼 수 있다.