자바의 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
'Programming > JPA' 카테고리의 다른 글
SQL Mapper와 ORM 차이 (0) | 2021.08.22 |
---|---|
JPA로 CRUD 구현하기_(4)비즈니스 로직 수행 (0) | 2021.08.20 |
JPA로 CRUD 구현하기_(3)CRUD 구현 (0) | 2021.08.20 |
JPA로 CRUD 구현하기_(2)객체와 테이블 매핑 (0) | 2021.08.20 |