Programming/JPA

JPA로 CRUD 구현하기_(1)프로젝트 생성

Deveun 2021. 8. 20. 23:01

자바의 ORM 기술표준인 JPA를 활용하여 간단한 CRUD 구현 프로젝트를 시작해보자.

여기서는 회원 추가(C), 회원 조회(R), 회원정보 수정(U), 회원 탈퇴(D) 4가지의 간단한 회원관리 기능만을 목표로 한다.

 

[Environment]

- IDE : IntelliJ

- DB : H2 1.4.200

- Java : open-jdk 16.0.2

- JPA : Hibernate 5.5.6 (Aug 04, 2021)

 

 

1. 프로젝트 생성

먼저, IntelliJ에서 Maven 프로젝트를 생성한다.

File - New - Project - Maven 선택 후 Next -> 프로젝트 Name, 파일 Location 설정 후 Finish

 

프로젝트 계층구조를 위해 다음과 같이 패키지를 생성한다.

- service package : 로직을 수행하는 method들이 정의된 클래스를 저장

- vo package: JPA를 통해 DB의 테이블과 매핑할 도메인 객체를 저장

- repository package: JPA가 DB와 데이터를 주고받는 작업이 수행됨. DIT를 위해 인터페이스로 생성

- infra package: 실제 repository 로직이 구현되는 클래스를 저장. 

 

 

 

2. 데이터베이스 설치하기

해당 실습에서는 H2 데이터베이스를 사용한다.

https://www.h2database.com/html/main.html 사이트에서 최신 버전으로 설치한다.

설치된 위치의 bin/h2.sh (윈도우는 h2w.bat 또는 h2.bat)을 실행한 뒤, 브라우저에서 http://localhost:8082를 들어간다.

 

위와 같이 입력한 뒤 데이터베이스에 연결한다.
(database creation 에러가 발생할 경우에는 JDBC URL: jdbc:h2:~/test 로 연결한 뒤 위를 다시 시도한다.)

 

다음 쿼리로 MEMBER 테이블을 생성한다.

CREATE TABLE MEMBER (
ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255),
AGE INTEGER,
PRIMARY KEY (ID)
);

 

 

3. pom.xml 설정: DB, JPA 의존성 추가

생성한 프로젝트에서 H2 DB를 사용하고, JPA(Hibernate)를 사용하기 위해 다음과 같이 의존성(Dependency)을 추가한다.

<dependencies>
    <!-- JPA- Hibernate를 사용하기 위함-->
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.5.6.Final</version>
    </dependency>

    <!-- H2 데이터베이스를 사용하기 위함-->
    <!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.200</version>
        <scope>test</scope>
    </dependency>
</dependencies>

 

 

4. persistence.xml 설정

META-INF/persistence.xml 경로의 설정파일은 JPA 사용에 필요한 정보들을 관리한다. 다음과 같이 필수 JPA 설정 정보를 입력하자.

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             version="2.1">
    <persistence-unit name="jpa-crud">
        <properties>
            <!-- 필수 속성 -->
            <!-- JDBC 드라이버-->
            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
            <!-- DB 접속 아이디-->
            <property name="javax.persistence.jdbc.user" value="sa"/>
            <!-- DB 접속 비밀번호-->
            <property name="javax.persistence.jdbc.password" value=""/>
            <!-- DB 접속 URL-->
            <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
            <!-- 하이버네이트 DB 방언-->
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
        </properties>
    </persistence-unit>
</persistence>

 

여기까지 JPA 프로젝트를 생성이 완료되었다.

다음 게시글에서 객체와 테이블을 매핑하고, 애플리케이션을 개발해보자.

 

 

 

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

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

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