1️⃣ 개요
요즘 Spring 공부를 하면서 김영한님의 JPA 강의도 듣고 있다.
데이터베이스에는 MySQL, Oracle, MongoDB 등 종류가 정말 많지만, 공부를 할 때에는 H2 데이터베이스를 사용한다.
Maven 으로 프로젝트를 생성할 때와 Gradle 로 생성할 때 DB 연결 설정이 조금 다르다.
둘 다 사용해본 결과 Gradle 이 좀 더 편했고, 실제로 요즘 Gradle 을 더 많이 사용한다고 들었다.
매번 설정 방법을 찾아보기 귀찮아서 두 가지 방법을 모두 포스팅하겠다.
2️⃣ Maven
Maven 에서는 'pom.xml' 과 'persistence.xml' 파일에서 설정을 한다.
우선 기본적으로 생성되어있는 'pom.xml' 파일에 의존성을 추가해준다.
다음과 같은 코드를 넣어주자.
<!-- JPA 하이버네이트 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.3.10.Final</version>
</dependency>
<!-- H2 데이터베이스 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.199</version>
</dependency>
기본적으로 JPA 의 구현체인 Hibernate 를 사용할 것이기 때문에 다음과 같은 의존성 정보를 추가해주면 된다.
물론 버전이 맞지 않을 수도 있는데, 이는 공식 홈페이지에 들어가서 최신 버전을 살펴보면 된다.
다음으로 JPA 설정을 해주어야 한다.
JPA 설정은 관례로 'META-INF' 라은 폴더에 'persistence.xml' 파일을 만들어주어야 한다.
src/main/resources 에 폴더를 만들고 xml 파일을 만들어주자.
즉, src/main/resources/META-INF/persistence.xml 이 되어야 한다.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="이름">
<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.hbm2ddl.auto" value="create" />-->
</properties>
</persistence-unit>
</persistence>
여기서 중요한 점은 <persistence-unit name="이름"> 이 부분이다.
이후에 'EntityManagerFactory' 의 이름과 일치해야 한다.
따라서 적절한 이름을 넣어주도록 하자.
또한 필수 속성 4 번째 줄에 value 값으로 H2 DB 의 주소가 들어간다.
마지막 'test' 는 DB 이름으로, 실제 자신이 사용하는 DB 이름을 넣어주면 된다. 이 점 주의하자.
각 속성과 옵션에 대해서는 다음에 자세히 다루도록 하겠다.
3️⃣ Gradle
우선 Gradle 인 경우 'build.gradle' 파일을 보자.
나는 보통 start.spring.io 를 사용하기 때문에 라이브러리를 쉽게 추가할 수 있다.
만약 start.spring.io 를 사용한다면 'Spring Data JPA' , 'H2 Database' 를 추가하자.
dependencies{
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
}
다음으로 'application.yml' 에 H2 관련 설정을 해주어야 한다.
역시 src/main/resources 폴더를 보자.
처음엔 'application.properties' 파일이 있을건데, 이것을 지우고 'application.yml' 파일을 만들자.
즉, src/main/resources/application.yml 이 되어야 한다.
이곳에 다음 코드를 넣어주자.
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/name;
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
# show_sql: true
format_sql: true
logging:
level:
org.hibernate.SQL: debug
org.hibernate.type: trace
* 참고로 들여쓰기를 할 때 칸 수가 맞아야 한다. 주의하자.
- 3 번째 줄인 'url' 부분에 H2 DB 의 주소를 적어주면 된다.
여기서 name 에는 H2 데이터베이스의 이름을 넣어주면 된다.
참고 : 인프런 김영한님 강의 - 자바 ORM 표준 JPA 프로그래밍 <= 강추요