객체 매핑 시작
회원 테이블 생성
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