Programming/JPA

JPA로 CRUD 구현하기_(2)객체와 테이블 매핑

Deveun 2021. 8. 20. 23:02

** 이전게시글 참고:

2021.08.20 - [Programming/JPA] - JPA로 CRUD 구현하기_(1)프로젝트 생성

 

 

1. Member 객체 매핑

JPA 사용을 위해서는 다음과 같이 자바 클래스와 회원 테이블을 매핑해야한다.

 

 

[vo/Member.java]

package vo;

// JPA annotation을 사용하기 위한 라이브러리
import javax.persistence.*;

// @Entity: DB Table과 매핑될 클래스임
// @Table: 매핑할 Table 정보
// @Id: 테이블의 기본키와 매핑할 필드
// @Column: 필드와 컬럼을 매핑

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

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

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

    // table의 컬럼명과 동일할 때는 매핑정보 생략가능
    private Integer age;


	// 생성자와 Getter, Setter 부분은 생략한다
    // ...
}

 

 

 

2. 엔티티 매니저 생성

JPA를 이용한 데이터베이스 등록 / 수정 / 삭제 / 조회 등 대부분의 기능들은 엔티티 매니저에서 생성된다. 즉, 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스와 같은 역할을 한다. 엔티티 매니저는 엔티티 매니저 팩토리에서 생성되는데, 이 팩토리는 데이터베이스 하나의 웹 어플리케이션에서 단 1개만 생성되어 공유하며, 필요시마다 엔티티 매니저를 만든다. 

[출처] 자바 ORM 표준 JPA 프로그래밍, 김영한 저자

 

[infra/utils/JpaUtil.java]

package infra.utils;

import javax.persistence.*;

public class JpaUtil {

    // persistence.xml 에서 설정한 영속성 유닛 name
    private static final String PERSISTENCE_UNIT_NAME = "jpa-crud";
    private static EntityManagerFactory emf;

    // 엔티티 매니저 팩토리 (싱글톤)
    public static EntityManagerFactory getEmf() {
        if(emf == null) {
            emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
        }
        return emf;
    }
}

 

실습에서는 편의를 위해 엔티티 매니저를 관리하는 Util class를 생성하였고, 싱글톤으로 EntityManagerFactory를 관리할 수 있도록 구현하였다.

 

자 이제 JPA를 사용하기 위한 준비가 거의 끝났다.

다음 게시글에서는 비즈니스 로직을 수행하는 service부분과 CRUD를 구현해보자.

 

 

 

[참고서적] 자바 ORM 표준 JPA 프로그래밍, 김영한 저자

[참고서적] DDD START! 도메인 주도설계 구현과 핵심 개념 익히기, 최범균 저자

[참고] https://www.javaguides.net/2018/12/jpa-crud-example.html