Spring | Spring Data JPA 이용 | persistence.xml 생성


우선 Bean 설정 파일을 이용하는 형태로 Spring Data JPA를 사용해보기로 하자.

Spring Data JPA를 사용하려면 프로젝트에 몇 가지 준비해야 하는 것이 있다. 그 중 하나가 “persistence.xml"라는 파일이다. 이 파일은 “지속성 단위(Persistence unit)“이라고하는 정보를 포함하고 있다.

JPA에서 데이터베이스 액세스를 실행하기 위하여 “지속성"이라는 것을 제공한다. 즉, 이 persistence.xml 안에는 액세스하는 데이터베이스에 대한 정보를 기술해 두는 것이라고 생각하면 된다.

이 파일은 Web 어플리케이션의 “META-INF” 폴더에 저장한다. Maven 프로젝트인 경우에는 “src"의 “main"에 있는 “resources"폴더가 Web 어플리케이션의 디렉토리이다. 이 “resources"폴더에 “META-INF"라는 폴더를 생성하고, 그 안에 “persistence.xml ‘라는 이름으로 파일을 만들고 아래 목록 아래의 내용을 작성하자.

<?xml version="1.0" encoding="UTF-8"?>
<persistence
    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.xsd">
 
    <persistence-unit name="persistence-unit"
        transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.diarect" value="${hibernate.dialect}" />
            <property name="hibernate.hbm2ddl.auto" value="${hibernate.hbm2ddl.auto}" />
            <property name="javax.persistence.jdbc.driver" value="${db.driver}" />
            <property name="javax.persistence.jdbc.url" value="${db.url}" />
            <property name="javax.persistence.jdbc.user" value="${db.user}" />
            <property name="javax.persistence.jdbc.password" value="${db.password}" />
        </properties>
    </persistence-unit>
     
</persistence>

이 persistence.xml에서 <persistence> 태그 내에 <persistence-unit> 태그를 넣는다. 이것이 지속성 단위의 정보를 기술하는 태그이다. 이 안에 <provider> 태그에 “공급자” 클래스를 지정하고, 추가로 <properties> 태그에 필요한 정보를 속성으로 기술하고 있다. 기술되어 있는 속성은 다음과 같다.

hibernate.diarect
hibernate.hbm2ddl.auto

이것들은 HibernatePersistence에 필요하다. Dialect는 데이터베이스와 상호 작용을 하는 클래스이며, 시작 및 종료시 데이터베이스 처리에 대한 설정이다. 여기에서는 H2를 이용하기 위한 Dialect와 시작할 때 새로운 데이터베이스를 준비하고, 종료시 삭제하는 설정을 하고 있다.

javax.persistence.jdbc.driver
javax.persistence.jdbc.url
javax.persistence.jdbc.user
javax.persistence.jdbc.password

이러한 데이터베이스 드라이버, 액세스 URL, 액세스에 사용하는 사용자 이름과 비밀번호 등을 각각 설정해 두는 것이다.

준비되어있는 속성은 사용하는 엔티티 관리자에 의해 다소 달라질 수 있다. 이번에는 Hibernate 라이브러리를 이용하고 있기 때문에, 그것은 전용 값이 속성에 추가되어 있다. 다른 엔티티 관리자를 사용하는 경우에는 또 다른 속성을 사용할 필요가 있을지도 모른다.