読者です 読者をやめる 読者になる 読者になる

スケのブログ

Java, Java EE, OpenAMなどの情報を記述していきます。

persistence.xmlメモ

JavaEE6+PostgreSQL+hibernateで動作確認しました。
まだまだ知らない設定値が山ほどあるのう。

<?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.xmlにはデータベースへの接続情報を記述します。
		参考:https://donow.jp/skillup/?p=357
	 -->

	<!--
		name : データベース識別子 @PersistenceContextのunitName属性と一致させてください。
		transaction-type : EntityManagerの使用するトランザクションタイプを指定します。
			- JTA : JTAトランザクションを使用します。
			- RESOURCE_LOCAL : 独自でトランザクション管理を行います。
	 -->
	<persistence-unit name="postgres" transaction-type="JTA">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<!-- Glassfishで管理しているデータソースを指定してください。-->
	    <jta-data-source>java:app/jdbc/myDataSource</jta-data-source>

		<!--
			entityクラス,embeddableクラス,およびmappedsuperクラスを記述します。
			指定したクラスが見つからない場合,コンテナの挙動に依存します。
			バッチ処理などでJPAを使用する場合(つまりJavaEEではない場合)エンティティをここに登録する必要があります。
		-->
		<!--
	    <class></class>
	     -->

		<!-- エンティティクラスが別のjarに含まれる場合は指定する必要あり -->
		<jar-file>lib/sample-model.jar</jar-file>

		<!--
			Perisitenceクラスの扱い方を指定します。
				- true : class要素,jar-file要素,およびmapping-file要素によって明示的に指定されたクラスだけPerisitenceクラスとして扱います。
				- false : 永続化ユニットのルート以下のclassファイルに対してJPA対象のクラスであるかどうかを自動的に検索します。
		 -->
		<exclude-unlisted-classes>false</exclude-unlisted-classes>

		<!--
			JPAのキャッシュ機能を指定します。
				- ALL : 全てのエンティティがキャッシュされます。
				- NONE : 全てのエンティティをキャッシュしません。
				- ENABLE_SELECTIVE : デフォルトがキャッシュされる設定です。アノテーションでキャッシュしないエンティティを指定します。
				- DISABLE_SELECTIVE : デフォルトがキャッシュされない設定です。アノテーションでキャッシュするエンティティを指定します。
				- UNSPECIFIED : デフォルト値です。javax.persistence.spi.PersistenceProviderインターフェイスの実装依存となります。

			参考: http://d.hatena.ne.jp/gloryof/20120922/1348299856
		-->
		<!--
		<shared-cache-mode>ALL</shared-cache-mode>
		 -->

		<!--
			JPAプロバイダの各種設定をkey=value形式で指定します。
		 -->
		<properties>
			<!-- GlassFishの場合は以下の指定が必要 -->

			<!-- トランザクション管理を行うクラスを指定します。 -->
			<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" />
			<!-- 使用するDBクラスを指定します。 -->
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
			<!-- ログにSQLを表示するかを指定します。 -->
			<property name="hibernate.show_sql" value="true"/>

			<!-- 使用するJDBCドライバを指定します。 -->
			<!--
			<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
			-->
			<!-- JDBC接続情報を指定します。 -->
			<!--
			<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://192.168.33.10:5432/testdb" />
			-->
			<!-- JDBC接続ユーザー名を指定します。 -->
			<!--
			<property name="javax.persistence.jdbc.user" value="sample" />
			-->
			<!-- JDBC接続パスワードを指定します。 -->
			<!--
			<property name="javax.persistence.jdbc.password" value="sample" />
			-->
			<!-- ログに出力したSQLコメントをフォーマットするかを指定します。 -->
			<!--
			<property name="format_sql" value="true"/>
			-->
			<!-- SQLコメントを出力するかを指定します。 -->
			<!--
			<property name="use_sql_comments" value="true" />
			-->
		</properties>
	</persistence-unit>
</persistence>