객체 매핑 시작

회원 테이블 생성

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

회원 클래스 생성

package jpabook.start;

public class Member {

    private Long id;
    private String username;
    private Integer age;

    public Long getId() {
        return id;
    }

    public void setId(Long 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;
    }
}

매핑정보

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

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

package jpabook.start;

import javax.persistence.*;

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

    @Id
    @Column(name = "ID")
    private Long id;

    @Column(name = "NAME")
    private String username;

    private Integer age;

    public Long getId() {
        return id;
    }

    public void setId(Long 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;
    }
}

클래스와 테이블 매핑

각 어노테이션 설명

매핑 정보를 표시하는 어노테이션을 몇 개 추가
@Entity, @Table, @Column이 매핑정보
JPA는 매핑 어노테이션을 분석해서 어떤 객체가 어떤 테이블과 관계가 있는지 알아낸다.

@Entity

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

@Table

  • 엔티티 클래스와 매핑할 테이블 정보를 알려준다.
  • "name 속성"을 사용해서 Member 엔티티를 MEMBER 테이블에 매핑
  • 이 어노테이션을 생략하면 "클래스 이름"을 그대로 테이블 이름으로 매핑

@Id

  • 엔티티 클래스의 필드를 테이블의 기본 키(Primary Key)에 매핑
  • 엔티티의 id 필드를 테이블의 ID 기본 키 컬럼에 매핑
  • @Id가 사용된 필드를 "식별자 필드"라 한다.

@Column

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

매핑 정보가 없는 필드

  • 매핑 어노테이션을 생략하면 필드명을 사용해서 컬럼명으로 매핑.
  • 필드명이 age이므로 age컬럼으로 매핑.
  • 만약 대소문자를 구분하는 데이타베이스를 사용하면 @Column(name="AGE")처럼 명시적으로 매핑해야 한다.

참고

JPA 어노테이션의 패키지는 javax.persistence http://docs.oracle.com/javaee/5/api/index.html?javax/persistence/package-summary.html

results matching ""

    No results matching ""