JPA

JPA시작(2)_객체 매핑방법_@Entity, @Table, @Id, @Column, persistence.xml 설정

개발자 배찌 2021. 6. 7. 12:25
728x90

h2 실행 > 회원테이블 만들기

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

회원클래스 작성하기

package jpabook.start;

import javax.persistence.*;    //jpa가 제공하는 매핑어노테이션 추가

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

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

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

    //매핑 정보가 없는필드
    private Integer age;

    //Getter, Setter
    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를 사용하려면 가장 먼저 "회원클래스"와 "회원테이블"을 매핑해야함! 

 

@Entity

이 클래스를 테이블과 매핑한다고 jap 에게 알려주는것. Entity가 사용된 클래스를 엔티티 클래스라고 함.

 

@Table

엔티티 클래스에게 매핑할 테이블 정보를 알려줌

@Table (name="MEMBER") : name 속성을 생략하면 클래스이름을 테이블이름으로 매핑함

 

@Id

엔티티 클래스의 필드를 테이블의 기본키에 매핑함. 이렇게 @Id가 사용된 필드를 "식별자필드" 라고 함.

 

@Column

필드를 컬럼에 매핑시킴.

 

매핑정보가 없는 필드

age 필드에는 어노테이션이 없다. 이렇게 매핑어노테이션이 생략되면 필드명을 사용해서 컬럼명으로 매핑함.

 

 


★ persistence.xml 설정 ★

 

JPA는 persistence.xml 을 사용해서 필요한 설정 정보를 관리.

 

경로 : META-INF/persistence.xml 

이 경로에 지정하면 별도의 설정없이 jpa가 인식할 수 있다.

 

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
    <persistence-unit name="jpabook">
        <properties>
            <!-- 필수 속성 -->
            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
            <property name="javax.persistence.jdbc.user" value="sa"/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />

            <!-- 옵션 -->
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.use_sql_comments" value="true" />
            <property name="hibernate.id.new_generator_mappings" value="true" />

            <!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
        </properties>
    </persistence-unit>
</persistence>