Development Memories/JPA

【JPA】Persistence.xml 설정 방법

친절한올드보이 2021. 4. 11. 22:22
반응형

JPA는 Persistence.xml을 이용해서 관련 정보를 관리합니다. 

 

파일의 위치는 아래와 같이 META-INF 폴더안에 있으면 별도의 설정없이도 인식이 가능합니다.

persistence.xml 파일 위치

 

아래 코드는 「김영한님의 자바 ORM 표준 JPA 프로그래밍」의 샘플 소스를 인용하였습니다.

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">

    <persistence-unit name="JPABOOK">

        <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.id.new_generator_mappings" value="true" />

        </properties>
    </persistence-unit>

</persistence>

 

코드를 하나씩 보면

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">

XML의 네임 스페이스와 JPA의 버전을 명시하는 합니다. 위 코드에서는 JPA 2.1을 명시하고 있습니다.

 

<persistence-unit name="JPABOOK">

JPA 설정은 persistence-unit(영속성 유닛)라는 것부터 시작을 하는데 일반적으로 연결할 데이터 베이스당 하나의 영속성 유닛을 등록하게 됩니다. persistence-unit에는 하나의 고유한 이름을 설정해야하는데, 위 코드에서는 JPABOOK를 설정한 상태 입니다.

 

<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"/>

각 프로퍼티에 대해서 살펴보면

  • jdbc.dirver : JDBC 드라이버
  • jdbc.user : 아이디
  • jdbc.password : 비밀번호
  • jdbc.url : DB 접속 URL
<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.id.new_generator_mappings" value="true" />

하이버네이트 속성

  • hibernate.dialect : DB dialect 설정
  • hibernate.show_sql : 실행한 SQL 쿼리문을 로그로 출력
  • hibernate.format_sql : 실행한 SQL 쿼리문을 정렬
  • hibernate.use_sql_comments : 쿼리 출력할때 주석문도 함께 출력
  • hibernate.id.new_generator_mappings : JPA 표준에 맞춘 키 생성 전략을 사용

여기서 dialect에 대해서 잠시 살펴보면....

JPA 특징 중에 특정 DB에 종속되지 않는다는 점이 있는데, 이 dialect의 역할로 인해 어플리케이션에서 사용중인 DB를 다른 DB로 쉽게 변경 할수 있습니다.

 

하이버네이트에서 지원하는 dialect 리스트는 아래 링크에서 확인 할수 있습니다.

docs.jboss.org/hibernate/stable/orm/javadocs/org/hibernate/dialect/package-summary.html