11.4 퍼시스턴스 유닛 설정
JPA에서 퍼시스턴스 컨텍스트가 어떤 데이터베이스용 SQL을 생성해야 할지, 또 어떤 데이터소스를 사용할지 등을 어디엔가 설정해야 한다. 이를 퍼시스턴스 유닛이라는 단위로 관리하며 persistence.xml 파일에 설정한다.
persistence.xml 파일 내용
다음의 persistence.xml 파일에서는 <persistence-unit>에 지정된 ‘test’라는 이름의 퍼시스턴스 유닛이 데이터소스로 ‘java:jboss/datasource/testDS’를 사용하도록 설정된 것을 확인할 수 있다.
<properties>에서는 벤더 고유의 속성들을 지정할 수 있다. JBoss EAP 6에서는 Hibernate를 JPA 구현체로 사용하기 때문에 Hiberanate의 속성들을 지정하고 있다.
<xml version="1.0" encoding="UTF-8" >
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="test">
<jta-data-source>java:jboss/datasources/testDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.show_sql" value="false" />
</properties>
</persistence-unit>
</persistence>
persistence.xml파일은 EAR이나 JAR 파일일 경우에는 META-INF/persistence.xml에 저장하고, WAR파일에 포함할 경우에는 WEB-INF/classes/META-INF/persistence.xml에 저장하면 된다.
Hibernate 설정
JBoss EAP 6에서 JPA 구현체로 Hibernate를 사용하기 때문에 <properties>에서 Hibernate 속성을 지정할 수 있다고 했다. Hibernate에는 수많은 속성을 사용할 수 있지만, 주로 많이 사용되는 몇 가지 속성들에 대해서 간략히 설명한다. Hibernate에 대한 더 자세한 속성들은 매뉴얼을 참조하라.
| 속성 | 설명 |
|---|---|
| hibernate.dialect | Hibernate에서 특정 데이터베이스에 대한 최적화된 SQL을 생성할 수 있도록 설정하는 값. 오라클 데이터베이스의 경우 ‘org.hibernate.dialect.Oracle10gDialect’이나 ‘org.hibernate.dialect.Oracle9iDialect’ 를 설정하고, MySQL일 경우에는 ‘org.hibernate.dialect.MySQL5Dialect’을 설정한다. |
| hibernate.show_sql | true로 설정하면 실행하는 SQL문을 로그에 출력한다. |
| hibernate.format_sql | true로 설정하면 로그에 SQL문을 포맷팅하여 출력한다. |
| hibernate.default_schema | SQL문에서 기본값으로 사용할 스키마를 지정한다. |
| hibernate.default_catalog | SQL문에서 기본값으로 사용할 카탈로그를 지정한다. |
| hibernate.generate_statistics | true로 설정하면 Hibernate의 통계정보를 수집한다. 수집된 값들은 JMX를 사용하여 확인할 수 있다. JMX 값을 확인하려면 JConsole을 사용한다. |
| hibernate.use_sql_comments | true로 설정하면 Hibernate가 생성하는 SQL문에 주석이 추가되어 디버깅시 사용할 수 있다. |
| hibernate.hbm2ddl.auto | 개발시 사용하는 속성으로 처음 시작될 때 데이터베이스 스키마를 검증하여 스키마가 없으면 자동으로 생성하고, 종료될 때 스키마를 drop한다. 사용할 수 있는 옵션은 다음과 같다. ‘validate’ : 스키마를 검증한다. ‘update’ : 스키마를 갱신한다. ‘create’ : 스키마를 생성한다. ‘create-drop’ : 스키마를 생성하고 마지막에 삭제한다. |
| hibernate.hbm2ddl.import_files | 개발시 사용하는 속성으로 스키마가 생성된 후 실행할 SQL문이 보관된 파일을 지정할 수 있다. 여러 파일을 지정하려면 컴마로 구분한다. hibernate.hbm2ddl.auto가 create나 create-drop으로 설정되어 있을 때만 실행된다. |
표 2 . Hibernate 설정 항목