| Oracle® Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス 12c (12.2.1.2.0) E82670-01 |
|
![]() 前 |
![]() 次 |
この章では、永続性プロパティの拡張機能について説明します。また、永続性ユニットをJPA永続性ディスクリプタ・ファイルpersistence.xmlに構成します。EclipseLinkには、persistence.xmlファイルに構成可能な数多くの永続性プロパティの拡張機能が組み込まれています。
この章の内容は次のとおりです。
次に、EclipseLinkの永続性プロパティ(persistence.xmlファイル)の拡張機能を機能別にカテゴリ化してリストします。
EclipseLinkには、ウィービング用に次の永続性プロパティの拡張機能が組み込まれています。
EclipseLinkには、ディスクリプタおよびセッションをカスタマイズするために、次の永続性プロパティの拡張機能が組み込まれています。
EclipseLinkには、検証用に次の永続性プロパティの拡張機能が組み込まれています。
EclipseLinkには、キャッシング用に次の永続性プロパティの拡張機能が組み込まれています。
EclipseLinkには、マッピング用に次の永続性プロパティの拡張機能が組み込まれています。
EclipseLinkには、マッピング用に次の永続性プロパティの拡張機能が組み込まれています。
EclipseLinkには、JDBC接続および接続プーリングを構成するために、次の永続性プロパティの拡張機能が組み込まれています。
次に、EclipseLinkの永続性プロパティ(persitence.xmlファイル)の拡張機能をアルファベット順にリストします。
eclipselink.application-locationプロパティを使用して、EclipseLinkによってDDLファイルが書き込まれる(出力される)ファイル・システム・ディレクトリを指定します。
eclipselink.cache.coordination.channelプロパティを使用して、クラスタ環境のキャッシュ・コーディネーションを構成します。
例
例5-3に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-3 persistence.xmlでのapplication-locationの使用
<property name="eclipselink.cache.coordination.channel" value="EmployeeChannel" />
例5-4に、プロパティ・マップでこのプロパティを使用する方法を示します。
クラスタ環境にJMSコーディネーションを使用する場合、eclipselink.cache.coordination.jms.factoryプロパティを使用して、JMSトピック・コネクション・ファクトリ名を構成します。
クラスタ環境にJMSコーディネーションを使用する場合、eclipselink.cache.coordination.jms.hostプロパティを使用して、トピックをホストするJMSサーバーのURLを構成します。
使用方法
このプロパティは、JMSコーディネーションに使用します(eclipselink.cache.coordination.protocol = jmsの場合)。完全修飾されたURLを使用する必要があります。
eclipselink.cache.coordination.jms.reuse-topic-publisherプロパティを使用して、JSM転送マネージャがTopicPubliserをキャッシュし、すべてのキャッシュ・コーディネーションの公開に再利用するかどうかを指定します。
クラスタ環境にJMSコーディネーションを使用する場合、eclipselink.cache.coordination.jms.topicプロパティを使用して、JMSトピック名を設定します。
クラスタ環境にキャッシュ・コーディネーションを使用する場合、eclipselink.cache.coordination.jndi.initial-context-factoryプロパティを使用して、JNDI InitialContextファクトリを設定します。
例
例5-5に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-5 persistence.xmlでのcache.coordination.jndi.initial-context-factoryの使用
<property name="eclipselink.cache.coordination.jndi.initial-context-factory" value="weblogic.jndi.WLInitialContextFactory/>
例5-6に、プロパティ・マップでこのプロパティを使用する方法を示します。
クラスタ環境にキャッシュ・コーディネーションを使用する場合、eclipselink.cache.coordination.jndi.passwordプロパティを使用して、cache.coordination.jndi.userのパスワードを設定します。
例
例5-7に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-7 persistence.xmlでのcache.coordination.jndi.passwordの使用
<property name="eclipselink.cache.coordination.jndi.user" value="USERNAME"/> <property name="eclipselink.cache.coordination.jndi.password" value="PASSWORD"/>
例5-8に、プロパティ・マップでこのプロパティを使用する方法を示します。
クラスタ環境にキャッシュ・コーディネーションを使用する場合、eclipselink.cache.coordination.naming-serviceプロパティを使用して、使用するネーミング・サービスを指定します。
例
例5-9に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-9 persistence.xmlでのcache.coordination.naming-serviceの使用
<property name="eclipselink.cache.coordination" value="true"/> <property name="eclipselink.cache.coordination.naming-service" value="jndi"/>
例5-10に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.cache.coordination.propagate-asynchronouslyプロパティを使用して、コーディネーションのブロードキャストが、コミットするスレッドと非同期で発生するかどうかを指定します。
このプロパティでは、クラスタ環境のキャッシュ・コーディネーションを構成します。コーディネーションのブロードキャストが、コミットするスレッドと非同期で発生するかどうかを設定します。つまり、スレッドがトランザクションのコミットから戻る前に、コーディネーションが完了します。
使用方法
この設定に関係なく、JMSキャッシュ・コーディネーションは常に非同期です。
デフォルトでは、RMIキャッシュ・コーディネーションは非同期です。要求が返される前にすべてのサーバーが更新されるようにするには、同期(eclipselink.cache.coordination.propagate-asynchronously = false)を使用します。
例
例5-11に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-11 persistence.xmlでのcache.coordination.propagate-asynchronouslyの使用
<property name="eclipselink.cache.coordination.propagate-asynchronously" value="false" />
例5-12に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.cache.coordination.protocolプロパティを使用して、使用するキャッシュ・コーディネーション・プロトコルを指定します。各ディスクリプタのキャッシュ構成に応じて、クラスタに対するキャッシュの更新または挿入がブロードキャストされ、各セッションのキャッシュが更新または無効化されます。
値
表5-12は、この永続性プロパティの値を説明しています。
表5-12 cache.coordination.protocolの有効値
| Value | 説明 |
|---|---|
|
|
Java Message Service (JMS)を使用して、変更をブロードキャストします。 |
|
|
使用予定のEJB MessageDrivenBeanを使用して、変更をブロードキャストします。MessageDrivenBeanを個別に構成する必要があります。 |
|
|
Java Remote Method Invocation (RMI)を使用して、変更をブロードキャストします。 |
|
|
RMI over Internet Inter-ORB Protocol (IIOP)を使用して、変更をブロードキャストします。 |
|
ClassName |
|
例
例5-13に、persistence.xmlファイルでJMSキャッシュ・コーディネーションを構成する方法を示します。
例5-13 persistence.xmlでのJMSキャッシュ・コーディネーションの構成
<property name="eclipselink.cache.coordination.protocol" value="jms" /> <property name="eclipselink.cache.coordination.jms.topic" value="jms/EmployeeTopic" /> <property name="eclipselink.cache.coordination.jms.factory" value="jms/EmployeeTopicConnectionFactory" />
アプリケーションをクラスタで実行中ではない場合、次のようにURLを指定する必要があります。
<property name="eclipselink.cache.coordination.jms.host" value="t3://myserver:7001/" />
また、必要に応じて、サーバーにアクセスするために(別のドメインを使用している場合など)、ユーザー名とパスワードを含めることもできます。
<property name="eclipselink.cache.coordination.jndi.user" value="weblogic" /> <property name="eclipselink.cache.coordination.jndi.password" value="welcome1" />
例5-14に、persistence.xmlファイルでRMIキャッシュ・コーディネーションを構成する方法を示します。
例5-14 persistence.xmlでのRMIキャッシュ・コーディネーションの構成
<property name="eclipselink.cache.coordination.protocol" value="rmi" />
アプリケーションをクラスタで実行中ではない場合、次のようにURLを指定する必要があります。
<property name="eclipselink.cache.coordination.rmi.url" value="t3://myserver:7001/" />
また、必要に応じて、サーバーにアクセスするために(別のドメインを使用している場合など)、ユーザー名とパスワードを含めることもできます。
<property name="eclipselink.cache.coordination.jndi.user" value="weblogic" /> <property name="eclipselink.cache.coordination.jndi.password" value="welcome1" />
デフォルトでは、RMIキャッシュ・コーディネーション・ブロードキャストは非同期です。このことは、必要に応じてオーバーライドできます。
<property name="eclipselink.cache.coordination.propagate-asynchronously" value="false" />
同じサーバーまたはネットワーク上に複数のアプリケーションがある場合、アプリケーションごとに個別のキャッシュ・コーディネーション・チャネルを指定できます。
<property name="eclipselink.cache.coordination.channel" value="EmployeeChannel" />
RMIキャッシュ・コーディネーションでは、サーバーが相互に検索できるようにマルチキャスト・ソケットを使用します。必要に応じて、次のようにマルチキャスト設定を構成できます。
<property name="eclipselink.cache.coordination.rmi.announcement-delay" value="1000" /> <property name="eclipselink.cache.coordination.rmi.multicast-group" value="239.192.0.0" /> <property name="eclipselink.cache.coordination.rmi.multicast-group.port" value="3121" /> <property name="eclipselink.cache.coordination.packet-time-to-live" value="2" />
関連項目
詳細は、次を参照してください。
cache.coordination.jms.reuse-topic-publisher「cache.coordination.jms.reuse-topic-publisher」
EclipseLinkの理解のキャッシュ・コーディネーションに関する項
EclipseLinkソリューション・ガイドのクラスタ内のTopLinkアプリケーションのスケーリングに関する項
eclipselink.cache.coordination.remove-connection-on-errorプロパティを使用して、キャッシュ・コーディネーション中にEclipseLinkで通信エラーが発生した場合、接続を削除するかどうかを指定します。
例
例5-15に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-15 peristence.xmlでのcache.coordination.remove-connection-on-errorの使用
<property name="eclipselink.cache.coordination.remove-connection-on-error" value="true"/>
例5-16に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.cache.coordination.rmi.announcement-delayプロパティを使用して、起動時に他のクラスタ・メンバーからの通知を待機する時間(ミリ秒単位)を設定します。
クラスタ環境にキャッシュ・コーディネーションを使用する場合、eclipselink.cache.coordination.rmi.multicast-groupプロパティを使用して、(クラスタの他のメンバーを検索するのに使用する)マルチキャスト・ソケット・グループのアドレスを設定します。
クラスタ環境にキャッシュ・コーディネーションを使用する場合、eclipselink.cache.coordination.rmi.multicast-groupプロパティを使用して、(クラスタの他のメンバーを検索するのに使用する)マルチキャスト・ソケット・グループのポートを設定します。
eclipselink.cache.coordination.rmi.packet-time-to-liveプロパティを使用して、セッション通知データ・パケットが失効するまでのホップ数を設定します。マルチキャスト・グループは、クラスタの他のメンバーを検索するために使用されます。
使用方法
WANに含まれる別々のLANでセッションがホストされている場合は、あるセッションによって送信された通知が他のセッションに到達しないことがあります。この場合は、適切な存続時間の値についてネットワーク管理者に問い合せるか、他のセッションによって送信された通知が各セッションで受信されるまで値を増やすことによって、ネットワークをテストしてください。
このプロパティは、RMIコーディネーションに使用します(eclipselink.cache.coordination.protocol = rmiの場合)。
eclipselink.cache.coordination.rmi.urlプロパティを使用して、ホスト・サーバーのURLを設定します。このURLは、他のクラスタ・メンバーがこのホストに接続するときに使用されます。
使用方法
このプロパティは、RMIコーディネーションに使用します(eclipselink.cache.coordination.protocol = rmiの場合)。
これは、クラスタ環境でJNDIがレプリケートされる場合には不要である可能性があります。また、場所をシステム・プロパティとして設定するか、SessionCustomizerを使用して設定すると、サーバーごとに個別のpersistence.xmlファイルを使用する必要がなくなります。
eclipselink.cache.coordination.thread.pool.sizeプロパティを使用して、キャッシュ・コーディネーション・スレッドのための、スレッド・プールのサイズを構成します。
使用方法
RMIキャッシュ・コーディネーションの場合、EclipseLinkでは、変更通知を送信するためにノードごとに1つのスレッドを生成し、新規ノード通知をリスニングするために1つのスレッドを生成します。
JMSキャッシュ・コーディネーションの場合、EclipseLinkでは、JMS変更通知メッセージを受信するために1つのスレッドを生成し(MDBが使用されていない場合)、変更通知を処理するために1つのスレッドを生成します(MDBが使用されていない場合)。
例
例5-17に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-17 persistence.xmlでのcache.coordination.thread.pool.sizeの使用
<property name="eclipselink.cache.coordination.thread.pool.size" value="48"/>
例5-18に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.cache.database-event-listenerプロパティを使用して、EclipseLinkとOracle QCN/DCN (問合せ変更通知/データベース変更通知)などのデータベース・イベント通知サービスを統合します。
例
例5-19に、Oracle DCNでこのプロパティを使用する方法を示します。
例5-19 persistence.xmlでのcache.database-event-listenerの使用
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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
persistence_2_0.xsd"
version="2.0">
<persistence-unit name="acme" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.cache.database-event-listener" value=
"org.eclipse.persistence.platform.database.oracle.dcn.OracleChangeNotificationList
ener"/>
</properties>
</persistence-unit>
</persistence>
eclipselink.cache.sharedプロパティ接頭辞を使用して、エンティティのキャッシュを共有する(非独立キャッシュにする)かどうかを指定します。
eclipselink.cache.sizeプロパティ接頭辞を使用して、特定のエンティティ・タイプのキャッシュ・サイズを指定します。
eclipselink.cache.typeプロパティ接頭辞を使用して、キャッシュのタイプを設定します。
値
表5-23は、この永続性プロパティ接頭辞の値を説明しています。
表5-23 cache.typeの有効値
| Value | 説明 |
|---|---|
|
|
アプリケーションで使用中のすべてのオブジェクトが保持されます。参照されていないオブジェクトは解放され、ガベージ・コレクションの対象になります。このキャッシュ・タイプでは、オブジェクト識別性が保証され、ガベージ・コレクションが最適化されますが、キャッシュの利点はほとんど得られません。 |
|
|
アプリケーションで読み取られたすべてのオブジェクトが保持されます。参照されていないオブジェクトは、メモリー残量が低下しているとJVMが判断した場合にのみ、ガベージ・コレクションの対象として解放されます。このキャッシュ・タイプでは、オブジェクト識別性が保証され、メモリー残量の低下時にガベージ・コレクションが行われます。キャッシュの利点を最適に利用できます。 |
|
|
(デフォルト)アプリケーションで読み取られたすべてのオブジェクトおよび |
|
|
アプリケーションで使用中のすべてのオブジェクトおよび通常の |
|
|
アプリケーションで読み取られたすべてのオブジェクトが保持されます。このキャッシュ・タイプでは、ガベージ・コレクションは行われません。このタイプでは、オブジェクト識別性が保証され、ガベージ・コレクションは行われません。キャッシュの利点を完全に利用できます。 警告: このキャッシュ・タイプは、一定数のオブジェクトにのみ使用してください。そうでない場合、最終的にメモリー・リークが発生します。 |
|
|
いずれのオブジェクトもキャッシュされません。参照されていないオブジェクトはガベージ・コレクションの対象として解放されます。このタイプでは、オブジェクト識別性は提供されず、ガベージ・コレクションが完全に行われます。キャッシュの利点は得られません。 警告: このキャッシュ・タイプは、通常は使用しないでください。かわりに、 |
eclipselink.classloaderプロパティを使用して、Persistence.createEntityManagerFactoryに渡すプロパティ・マップに、EntityMangerFactoryを作成します。
eclipselink.composite-unitプロパティを使用して、永続性ユニットがコンポジット永続性ユニットかどうかを指定します。
使用方法
このプロパティは、コンポジット永続性ユニットのpersistence.xmlで指定する必要があります。コンポジット永続性ユニットには、persistence.xmlファイルによって指定されたJARファイルで見つかるすべての永続性ユニットが含まれている必要があります。
|
注意: このプロパティは、createEntityManagerFactoryメソッドに渡されるか、またはシステム・プロパティで設定されている場合、無視されます。 |
例
例5-21に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-21 persistence.xmlでのcomposite-unitの使用
<persistence 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 persistence_1_0.xsd" version="1.0">
<persistence-unit name="compositePu" transaction-type="JTA">
<provider>
org.eclipse.persistence.jpa.PersistenceProvider
</provider>
<jar-file>member1.jar</jar-file>
<jar-file>member2.jar</jar-file>
<properties>
<property name="eclipselink.composite-unit" value="true"/>
<property name="eclipselink.target-server" value="WebLogic_10"/>
</properties>
</persistence-unit>
</persistence>
eclipselink.composite-unit.memberプロパティを使用して、永続性ユニットがコンポジット永続性ユニットのメンバーであるかどうかを指定します。
使用方法
このプロパティをtrueに設定すると、永続性ユニットに、他の永続性ユニットに対する依存性があることを示します。
|
注意: このプロパティは、createEntityManagerFactoryメソッドに渡されるか、またはシステム・プロパティで設定されている場合、無視されます。
このプロパティが |
問合せヒント
コンポジット永続性ユニットについてネイティブ問合せを実行する場合、composite-unit.memberを使用して、問合せの実行対象であるコンポジット・メンバー永続性ユニットの名前を指定します。
例
例5-22に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-22 persistence.xmlでのcomposite-unit.memberの使用
コンポジット・メンバー永続性ユニットmemberPu2が、member2.jarファイルで定義されています。これは、member1.jarで定義されたクラスに対する依存性があり、単独では使用できません。
<persistence 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 persistence_1_0.xsd"
version="1.0">
<persistence-unit name="memberPu2">
<provider>
org.eclipse.persistence.jpa.PersistenceProvider
</provider>
<mapping-file>META-INF/advanced-entity-mappings2.xml</mapping-file>
<jta-data-source>jdbc/MySqlJtaDS</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.composite-unit.member" value="true"/>
<property name="eclipselink.target-database"
value="org.eclipse.persistence.platform.database.MySQLPlatform"/>
</properties>
</persistence-unit>
</persistence>
eclipselink.composite-unit.propertiesプロパティを使用して、永続性ユニットのメンバーについてプロパティを構成します。
例
例5-23に、プロパティ・マップでこのプロパティを使用する方法を示します
例5-23 プロパティ・マップでのcomposite-unit.propertiesの使用
Map props1 = new HashMap();
props1.put("javax.persistence.jdbc.user", "user1");
props1.put("javax.persistence.jdbc.password", "password1");
props1.put("javax.persistence.jdbc.driver", "oracle.jdbc.OracleDriver");
props1.put("javax.persistence.jdbc.url", "jdbc:oracle:thin:@oracle_db_url:1521:db");
Map props2 = new HashMap();
props2.put("javax.persistence.jdbc.user", "user2");
props2.put("javax.persistence.jdbc.password", "password2");
props2.put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
props2.put("javax.persistence.jdbc.url", " jdbc:mysql://my_sql_db_url:3306/user2");
Map memberProps = new HashMap();
memberProps.put("memberPu1", props1);
memberProps.put("memberPu2", props2);
Map props = new HashMap();
props.put("eclipselink.logging.level", "FINEST");
props.put("eclipselink.composite-unit.properties", memberProps);
EntityManagerFactory emf = Persistence.createEntityManagerFactory("compositePu", props);
eclipselink.connection-poolプロパティを使用して、接続プールの各種プロパティを構成します。
値
表5-28は、この永続性プロパティの値を説明しています。
表5-28 connection-poolの有効値
| Value | 説明 |
|---|---|
|
|
開始時(初期)の接続数。 |
|
|
最小接続数。 |
|
|
最大接続数。 |
|
|
プールからの接続を待機する時間(ミリ秒単位)。 |
|
|
接続用のJDBCのURL。 |
|
|
読取り接続プールについて、読取り接続がスレッド間で共有されることを示します。 |
|
|
接続に使用するJTAデータ・ソース名(デフォルトと異なる場合)。 |
|
|
接続に使用する非JTAデータ・ソース名(デフォルトと異なる場合)。 |
|
|
この接続に使用するユーザー名(デフォルトと異なる場合)。 |
|
|
この接続用の |
例
例5-24に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-24 persistence.xmlでのconnection-poolの使用
<property name="eclipselink.connection-pool.default.initial" value="1" /> <property name="eclipselink.connection-pool.node2.min" value="16"/> <property name="eclipselink.connection-pool.node2.max" value="16"/> <property name="eclipselink.connection-pool.node2.url" value="jdbc:oracle:thin:@node2:1521:orcl"/>
eclipselink.connection-pool.readプロパティを使用して、非トランザクション読取り問合せ用の読取り接続プールを構成します。
値
表5-29は、この永続性プロパティの値を説明しています。
表5-29 connection-pool.readの有効値
| Value | 説明 |
|---|---|
|
|
開始時(初期)の接続数。 |
|
|
最小接続数。 |
|
|
最大接続数。 |
|
|
プールからの接続を待機する時間。 |
|
|
JDBC接続のURL。 |
|
|
読取り接続プールについて、読取り接続がスレッド間で共有されることを示します。 |
|
|
接続に使用するJTAデータ・ソース名(デフォルトと異なる場合)。 |
|
|
接続に使用する非JTAデータ・ソース名(デフォルトと異なる場合)。 |
|
|
この接続に使用するユーザー名(デフォルトと異なる場合)。 |
|
|
この接続用の |
eclipselink.create-ddl-jdbc-file-nameプロパティを使用して、EclipseLinkによって生成された、JPAエンティティの表を作成するSQL文を含むDDLファイルの名前を指定します。
値
表5-31は、この永続性プロパティの値を説明しています。
表5-31 create-ddl-jdbc-file-nameの有効値
| Value | 説明 |
|---|---|
|
ファイル名 |
オペレーティング・システムに有効なファイル名。
|
使用方法
eclipselink.ddl-generationがcreate-tablesまたはdrop-and-create-tablesに設定されている場合、EclipseLinkでは、eclipselink.application-locationによって指定された場所に、このファイルが書き込まれます。
eclipselink.ddl-generationプロパティを使用して、EclipseLinkでデプロイメント時にデータベース・スキーマ(表および制約)用にデータ定義言語(DDL)を生成する方法を指定します。
値
表5-32は、この永続性プロパティの値を説明しています。
表5-32 ddl-generationの有効値
| Value | 説明 |
|---|---|
|
|
EclipseLinkでは、表ごとに この表がすでに存在する場合、EclipseLinkは、特定のデータベースとJDBCドライバの組合せに応じたデフォルトの動作に従います( |
|
|
EclipseLinkによって、表の作成が試行されます。表が存在する場合は、EclipseLinkによって、欠落しているすべての列が追加されます。 |
|
|
EclipseLinkによって、すべての表の このことは、開発においてスキーマが頻繁に変更される場合、または、テストにおいて既存データを消去する必要がある場合に役立ちます。 注意: |
|
|
(デフォルト) DDLは生成されず、スキーマも生成されません。 |
使用方法
eclipselink.ddl-generation.output-mode = databaseである場合にのみ、create-or-extend-tablesを使用できます。
Java SE環境で永続性を使用しており、表を作成することなくDDLファイルを作成する場合、追加的にJavaシステム・プロパティINTERACT_WITH_DBを定義して、その値をfalseに設定します。
このプロパティを有効にするには、DDL_GENERATIONを設定する必要があります。
例
例5-27に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-27 persistence.xmlでのddl-generationの使用
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> <property name="eclipselink.create-ddl-jdbc-file-name" value="createDDL_ddlGeneration.jdbc"/> <property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc"/> <property name="eclipselink.ddl-generation.output-mode" value="both"/>
例5-28に、プロパティ・マップでこのプロパティを使用する方法を示します。
例5-28 プロパティ・マップでのddl-generationの使用
import org.eclipse.persistence.config.PersistenceUnitProperties; propertiesMap.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.DROP_AND_CREATE); propertiesMap.put(PersistenceUnitProperties.DDL_GENERATION_MODE, PersistenceUnitProperties.BOTH); propertiesMap.put(PersistenceUnitProperties.CREATE_JDBC_DDL_FILE, "create.sql");
eclipselink.ddl-generation.output-modeプロパティを使用して、DDLがEclipseLinkによってどこに生成および書き込まれるかを指定します。
値
表5-33は、この永続性プロパティの値を説明しています。
表5-33 ddl-generation.output-modeの有効値
| Value | 説明 |
|---|---|
|
|
DDLは、データベースとファイルの両方に生成および書き込まれます。
|
|
|
(デフォルト) DDLは、データベースにのみ生成および書き込まれます。 |
|
|
DDLは、ファイルにのみ生成および書き込まれます。
|
eclipselink.descriptor.customizerプロパティをプロパティの接頭辞として使用して、DescriptorCustomizerを構成します。org.eclipse.persistence.descriptors.ClassDescriptorを値として使用するこのクラスのカスタマイズ・メソッドを使用して、拡張されたEclipseLinkディスクリプタにプログラムによってアクセスし、JPAエンティティに関連付けられるディスクリプタにAPIをマッピングします。
eclipselink.drop-ddl-jdbc-file-nameプロパティを使用して、EclipseLinkによって生成された、JPAエンティティの表を削除するSQL文を含むDDLファイルの名前を指定します。
値
表5-37は、この永続性プロパティの値を説明しています。
表5-37 drop-ddl-jdbc-file-nameの有効値
| Value | 説明 |
|---|---|
|
ファイル名 |
オペレーティング・システムに有効なファイル名。
|
使用方法
eclipselink.ddl-generationがcreate-tablesに設定されている場合、EclipseLinkでは、eclipselink.application-locationによって指定された場所にこのファイルが書き込まれます
eclipselink.exception-handlerプロパティを使用して、EclipseLink例外ハンドラ・クラス、すなわちorg.eclipse.persistence.exceptions.ExceptionHandlerインタフェースを実装し、デフォルトの(ゼロ引数)コンストラクタを提供する例外ハンドラ・クラスを指定します。このクラスは、デフォルトの引数を使用しないコンストラクタを提供する必要があります。
例
例5-33に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-33 persistence.xmlでのexception-handlerの使用
<property name="eclipselink.exception-handler" value="my.package.MyExceptionHandler">
例5-34に、プロパティ・マップでこの拡張機能を使用する方法を示します。
eclipselink.exclude-eclipselink-ormプロパティを使用して、特定の永続性ユニットについてEclipseLink ORMマッピング・ファイルを除外します。
使用方法
デフォルトでは、リソース名META-INF/eclipselink-orm.xmlで最初に見つかったファイルが処理され、注釈および標準マッピング・ファイルに指定された構成がオーバーライドされます。
eclipselink.flush-clear.cacheプロパティを使用して、flushメソッドに続いてclearメソッドが実行された場合のEclipseLink EntityManagerキャッシュの動作を指定します。
値
表5-40は、この永続性プロパティの値を説明しています。
表5-40 flush-clear.cacheの有効値
| Value | 説明 |
|---|---|
|
|
EclipseLinkによって、 これは最速のモードであり、メモリーの使用は最小となりますが、コミットを実行した後、共有キャッシュに含まれるデータが失効する可能性があります。 |
|
|
(デフォルト) EclipseLinkによって、 このモードは |
|
|
EclipseLinkによって、 このモードでは、コミットを実行した後、共有キャッシュが完全な状態に維持されますが、メモリー効率は最も低下します。非常に大規模なトランザクションでは、メモリーが不足する場合があります。 |
使用方法
このプロパティは、EntityManagerFactoryを作成するときに(createEntityManagerFactoryメソッドに渡すマップやpersistence.xmlファイルに)指定するか、またはEntityManagerを作成するときに(createEntityManagerメソッドに渡すマップに)指定できます。
前者は後者によってオーバーライドされることに注意してください。
例
例5-36に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-36 persistence.xmlでのflush-clear.cacheの使用
<property name="eclipselink.flush-clear.cache" value="Drop"/>
例5-37に、プロパティ・マップでこの拡張機能を使用する方法を示します。
eclipselink.jdbc.allow-native-sql-queriesプロパティを使用して、ユーザー定義(つまりネイティブ)のSQLを永続性ユニット内で許可するかどうかを指定します。
使用方法
マルチテナント内で、マルチテナント情報の公開による潜在的な影響を最小限に抑えるには、このオプションを使用します。デフォルトでは、永続性ユニットにマルチテナント・エンティティが含まれる場合、EclipseLinkではeclipselink.jdbc.allow-native-sql-queriesがfalseとして設定されます。
eclipselink.jdbc.batch-writingプロパティを使用してバッチ書込みを構成し、複数の書込み機能によってトランザクションが最適化されるようにします。
値
表5-43は、この永続性プロパティの値を説明しています。
表5-43 jdbc.batch-writingの有効値
| Value | 説明 |
|---|---|
|
|
JDBCバッチ書込みを使用します。 |
|
|
JDBCバッチ書込みおよびプラットフォームのネイティブ・バッチ書込みを使用しません。 |
|
|
Oracleプラットフォームのネイティブ・バッチ書込みを使用します。プロパティ・マップでは、 注意: このことには、Oracle JDBCドライバが必要となります。 |
|
|
|
|
|
(デフォルト)バッチ書込みを使用しません(つまり、オフにします)。 |
使用方法
バッチ書込みを使用すると、複数の異機種間の動的SQL文を、1つの実行としてデータベースに送信することや、複数の異機種間のパラメータ化されたSQL文を、1つのバッチ実行として実行できます。
|
注意: すべてのJDBCドライバやデータベースがバッチ書込みをサポートしているとはかぎりません。 |
eclipselink.jdbc.batch-writing.sizeを使用して、バッチ・サイズを指定します。
eclipselink.jdbc.cache-statementsプロパティを使用して、JDBC文がキャッシュされるかどうかを指定します。
例
例5-43に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-43 persistence.xmlでのjdbc.cache-statementsの使用
<property name="eclipselink.jdbc.cache-statements" value="false"/>
例5-44に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.jdbc.cache-statements.sizeプロパティを使用して、内部での文のキャッシングを使用する場合に保持する文の数を指定します。
eclipselink.jdbc.exclusive-connection.is-lazyプロパティを使用して、EclipseLinkで書込み接続の遅延取得を行うかどうかを指定します。
eclipselink.jdbc.exclusive-connection.modeプロパティを使用して、EclipseLinkでいつ書込み接続による読取りを実行するかを指定します。
値
表5-49は、この永続性プロパティの値を説明しています。
表5-49 jdbc.exclusive-connection.modeの有効値
| Value | 説明 |
|---|---|
|
|
(デフォルト)一部またはすべてのエンティティで独立キャッシュが必要な場合には独立クライアント・セッションを作成し、それ以外の場合にはクライアント・セッションを作成します。 注意:
|
|
|
独立エンティティを読み取る場合には排他独立クライアント・セッションを作成し、それ以外の場合にはエラーが発生します。 注意:
|
|
|
独立エンティティを読み取る場合には排他独立クライアント・セッションを作成し、それ以外の場合には排他クライアント・セッションを作成します。 注意: EclipseLinkでは、所有する |
使用方法
このプロパティは、EntityManagerFactoryを作成するときに(createEntityManagerFactoryメソッドに渡すマップまたはpersistence.xmlファイルのいずれかに)設定するか、またはEntityManagerを作成するときに(createEntityManagerメソッドに渡すマップに)設定できます。前者は後者によってオーバーライドされることに注意してください。
例
例5-50に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-50 persitence.xmlでのjdbc.exclusive-connection.modeの使用
property name="eclipselink.jdbc.exclusive-connection.mode" value="Always"/>
例5-51に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.jdbc.native-sqlプロパティを使用して、EclipseLinkで汎用SQLを使用するか、またはプラットフォーム固有(つまりネイティブ)のSQL文を組み込むかを指定します。
使用方法
プラットフォーム固有のSQLを使用する(eclipselink.jdbc.native-sql = true)場合、EclipseLinkでは、プラットフォーム固有のSQLを使用して、結合構文、日付演算子、順序付けの使用などをカスタマイズします。
eclipselink.jdbc.property接頭辞を使用して、JDBCドライバ固有の接続プロパティをEclipseLinkに渡します。
eclipselink.jdbc.uppercase-columnsプロパティを使用して、メタデータからの列名を強制的に大文字にします。
使用方法
ネイティブSQL問合せを使用する場合、一部のプラットフォームについてJDBCメタデータから小文字の列名が返される可能性があります。マッピングでの列名が大文字である場合(デフォルト)、これらは一致しません。このパラメータを使用して、メタデータからのすべての列名を強制的に大文字にする必要があります。
eclipselink.jpa.uppercase-column-namesプロパティを使用して、JPA処理ですべての列名定義が大文字になるように指定します(大/小文字を区別しないのと同じ状態にします)。
値
表5-54は、この永続性プロパティの値を説明しています。
表5-54 jpa.uppercase-column-namesの有効値
| Value | 説明 |
|---|---|
|
|
データベースから返されるJDBCメタデータが大文字で返されるため、フィールドの大/小文字が一致します。 |
|
|
(デフォルト)JDBCメタデータは大文字で返されません。 |
eclipselink.logging.exceptionsプロパティを使用して、例外がスローされた場合に、この例外をコール元のアプリケーションに返す前に記録するかどうかを指定します。
例
例5-60に、peristence.xmlファイルでこのプロパティを使用する方法を示します。
例5-60 persistence.xmlファイルでのlogging.exceptionsの使用
<property name="eclipselink.logging.exceptions" value="false" />
例5-61に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.logging.fileプロパティを使用して、標準出力のかわりにログを出力するファイルの場所を指定します。
eclipselink.logging.levelプロパティを使用して、特定のロギング・レベルを指定し、生成される量と詳細を制御します。
値
表5-59は、この永続性プロパティの値を説明しています。
表5-59 logging.levelの有効値
| Value | 説明 |
|---|---|
|
|
ロギングを無効化します。 ロギングのオーバーヘッドを回避するために、本番中に |
|
|
EclipseLinkが続行できないことを示す例外、およびログイン時に生成されたすべての例外を記録します。これにはスタック・トレースが含まれます。 |
|
|
|
|
|
(デフォルト)ユーザー名など、サーバー・セッションごとのログイン/ログアウトを記録します。セッションを取得すると、詳細情報が記録されます。 |
|
|
ログイン、JDBC接続およびデータベース情報のみを記録します。このログ・レベルは、デプロイメント時に使用する場合があります。 |
|
|
すべてのSQLを記録します。このログ・レベルは、デバッグおよびテスト時に使用する場合がありますが、本番では使用しません。 |
|
|
|
|
|
|
|
|
|
eclipselink.logging.parametersプロパティを使用して、SQLバインド・パラメータを例外およびログに含めるかどうかを定義します。
|
注意: このパラメータは、バインド・パラメータにのみ適用されます。バインディングを使用しない場合、パラメータは常に表示されます。 |
eclipselink.logging.sessionプロパティを使用して、EclipseLinkによって各ログ・メッセージにセッション識別子が含められるかどうかを指定します。
使用方法
この設定は、SQLなどのデータベース接続を必要とするメッセージ、および、どの基礎となるセッション(存在する場合)についてメッセージが送信されたかを判断するための、トランザクション情報を必要とするメッセージに適用可能です。
例
例5-69に、peristence.xmlファイルでこのプロパティを使用する方法を示します。
例5-69 persistence.xmlファイルでのlogging.sessionの使用
<property name="eclipselink.logging.session" value="false" />
例5-70に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.logging.threadプロパティを使用して、EclipseLinkによって各ログ・メッセージにスレッド識別子が含められるかどうかを指定します。
例
例5-71に、peristence.xmlファイルでこのプロパティを使用する方法を示します。
例5-71 persistence.xmlファイルでのlogging.threadの使用
<property name="eclipselink.logging.thread" value="false" />
例5-72に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.logging.timestampプロパティを使用して、EclipseLinkによって各ログ・メッセージにタイムスタンプが含められるかどうかを指定します。
例
例5-73に、peristence.xmlファイルでこのプロパティを使用する方法を示します。
例5-73 persistence.xmlファイルでのlogging.timestampの使用
<property name="eclipselink.logging.timestamp" value="false" />
例5-74に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.metadata-source.send-refresh-commandプロパティをクラスタ環境用のキャッシュ・コーディネーションとともに使用して、RCMリフレッシュ・メタデータ・コマンドをEclipseLinkがクラスタに送信する方法を制御します。
値
表5-67は、この永続性プロパティの値を説明しています。
表5-67 metadata-source.send-refresh-commandの有効値
| Value | 説明 |
|---|---|
|
|
(デフォルト)リフレッシュ・コマンドをクラスタに伝播するには、RCMを構成して、 |
|
|
リフレッシュ・コマンドはクラスタに伝幡されません。 |
使用方法
キャッシュ・コーディネーションが構成されており、かつ、セッションが起動時にデプロイされている場合、このプロパティによって、RCMリフレッシュ・メタデータ・コマンドのクラスタへの送信が制御されます。
これらのコマンドによって、リモート・インスタンスでメタデータがリフレッシュされます。
例
例5-77に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-77 persistence.xmlでのmetadata-source.send-refresh-commandの使用
<property name="eclipselink.metadata-source-refresh-command" value="false"/>
例5-78に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.multitenant.tenants-share-cacheをプロパティ使用して、マルチテナント・エンティティでL2キャッシュを共有するかどうかを指定します。
eclipselink.nosql.connection-factoryプロパティを使用して、JCA ConnectionFactoryのJNDI名またはNoSQLデータ・ソースに接続するJCA ConnectionFactoryのクラス名を指定します。
使用方法
このプロパティを使用すると、JCA ConnectionFactoryをNoSqlまたはNoSQLデータ・ソース(つまり、レガシー・データベース、NoSQLデータベース、XMLデータベース、トランザクション・システムやメッセージ・システム、ERPシステムなどの非リレーション・データ・ソース)用のEISアダプタとともに使用できます。
eclipselink.nosql.connection-specプロパティを使用して、NoSQLデータ・ソースへの接続方法を定義するEISConnectionSpecクラス名を指定します。
使用方法
このプロパティを使用すると、JCA ConnectionFactoryをNoSqlまたはNoSQLデータソース(つまり、レガシー・データベース、NoSQLデータベース、XMLデータベース、トランザクション・システムやメッセージ・システム、ERPシステムなどの非リレーション・データソース)用のEISアダプタとともに使用できます。
eclipselink.nosql.propertyプロパティを使用して、NoSQL固有の接続プロパティを設定します。
例
例5-85に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-85 persistence.xmlでのnosql.propertyの使用
<persistence 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 persistence_2_0.xsd"
version="2.0">
<persistence-unit name="acme" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.target-database"
value="org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform"/>
<property name="eclipselink.nosql.connection-spec"
value="org.eclipse.persistence.nosql.adapters.mongo.MongoConnectionSpec"/>
<property name="eclipselink.nosql.property.mongo.port" value="27017,
27017"/>
<property name="eclipselink.nosql.property.mongo.host" value="host1,
host2"/>
<property name="eclipselink.nosql.property.mongo.db" value="acme"/>
</properties>
</persistence-unit>
</persistence>
eclipselink.oracle.proxy-typeプロパティを使用して、OracleConnection.openProxySessionメソッドに渡すプロキシ・タイプを指定します。
使用方法
このプロパティにはOracle JDBCバージョン10.1.0.2以上が必要であり、eclipselink.target-databaseが、Oracle9以上を使用するように構成されている必要があります。
通常、createEntityManagerメソッドを使用するか、またはEntityManagerImplで独自のsetPropertiesメソッドを使用して、このプロパティをEntityManagerに設定する必要があります。これにより、トランザクション内で書込みおよび読取りを行う際に、EntityManagerでプロキシ接続が使用されます。
proxy-typeおよび対応するproxyプロパティがEntityManagerFactoryに設定されている場合、ファクトリによって作成されるすべての接続はプロキシ接続となります。
例
例5-86に、EntityManagerでこのプロパティを使用する方法を示します。
例5-86 EntityManagerでのeclipselink.oracle.proxy-typeの使用
Map emProperties = new HashMap();
emProperties.put("eclipselink.oracle.proxy-type",
OracleConnection.PROXYTYPE_USER_NAME);
emProperties.put(OracleConnection.PROXY_USER_NAME, "john");
EntityManager em = emf.createEntityManager(emProperties);
インジェクションを使用する場合:
entityManager.setProperty(”eclipselink.oracle.proxy-type”, OracleConnection.PROXYTYPE_USER_NAME); entityManager.setProperty(OracleConnection.PROXY_USER_NAME, ”john”);
eclipselink.orm.throw.exceptionsプロパティを使用して、persistence.xmlファイルの<mapping-file>要素に指定されたファイルのいずれかに問題が発生した場合に、例外をスローするか、または警告を記録するかを指定します。
orm.validate.schemaプロパティを使用して、orm.xmlのスキーマ検証をデフォルト値であるfalseからオーバーライドします。
eclipselink.partitioningプロパティを使用して、永続性ユニットにデフォルトのPartitioningPolicyを設定します。この値は、定義された既存のPartitioningPolicyの名前である必要があります。
使用方法
このプロパティを使用して、複数の異なるデータベース間またはOracle RACなどのデータベース・クラスタ全体で、クラスのデータをパーティション化します。パーティション化によって、複数のデータベース・マシンが要求を処理できるようになり、スケーラビリティを向上させることができます。
複数のパーティションを使用して単一のトランザクションを処理する場合は、XAトランザクションを適切にサポートするために、JavaトランザクションAPI (JTA)を使用します。
eclipselink.partitioning.callbackプロパティを使用して、外部DataSourceのアフィニティ・サポート(UCPなど)を統合します。
eclipselink.persistence-context.close-on-commitプロパティを使用して、コミット後にEntityManagerを閉じるか、または使用しないようにするか(延長なし)を指定します。
使用方法
コンテナ管理のEntityManagerやほとんどの管理対象アプリケーションでは、通常このプロパティをfalseに設定します。この設定により、commit()トランザクションの後に永続性コンテキストが再開されてパフォーマンスのオーバーヘッドが増加することを回避できます。
このプロパティをpersistence.xmlに設定するか、またはcreateEntityManagerFactoryに渡すと、ファクトリによって作成されるすべてのEntityManagersに影響を及ぼします。または、このプロパティを特定のEntityManagersに適用するには、createEntityManagerメソッドに渡します。
例5-94 persistence.xmlでのpersistence-context.close-on-commitの使用
<property name="eclipselink.persistence-context.close-on-commit" value="true"/>
例5-95に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.persistence-context.commit-without-persist-rulesプロパティを使用して、EntityManagerですべての管理対象オブジェクトを検索し、管理されていない新規の関連オブジェクトが見つかった場合は、CascadeType.PERSIST設定が欠落していても無視して永続化するかどうかを指定します。
eclipselink.persistence-context.flush-modeプロパティを使用して、EntityManager FlushModeを永続性プロパティとして設定されるよう構成し、いつフラッシュを行うかを指定します。
使用方法
このプロパティをpersistence.xmlに設定するか、またはcreateEntityManagerFactoryに渡すと、ファクトリによって作成されるすべてのEntityManagersに影響を及ぼします。このプロパティを特定のEntityManagersに適用するには、createEntityManagerメソッドに渡します。
eclipselink.persistence-context.persist-on-commitプロパティを使用して、EntityManagerですべての管理対象オブジェクトを検索し、管理されていない新規の関連オブジェクトのうち、カスケード永続化が設定されたものをすべて永続化するかどうかを指定します。これを使用すると、新規オブジェクトに対して常に永続化が使用される場合に、この検索を実行する負荷を回避できます。
使用方法
このプロパティをpersistence.xmlに設定するか、またはcreateEntityManagerFactoryに渡すと、ファクトリによって作成されるすべてのEntityManagersに影響を及ぼします。このプロパティを特定のEntityManagersに適用するには、createEntityManagerメソッドに渡します。
eclipselink.persistence-context.reference-modeプロパティを使用して、永続性コンテキスト内でハード参照とソフト(つまり弱い)参照のどちらを使用するかを指定します。
値
表5-84は、この永続性プロパティの値を説明しています。
表5-84 persistence-context.reference-modeの有効値
| Value | 説明 |
|---|---|
|
|
(デフォルト) EclipseLinkにより、ハード参照を使用してすべてのオブジェクトが参照されます。参照アーティファクト(永続性コンテキストや作業ユニットなど)を解放、消去または閉じるまで、これらのオブジェクトをガベージ・コレクションに使用することはできません。 |
|
|
アクティブ属性の変更追跡(「@ChangeTracking」を参照)をサポートするオブジェクトへの参照は、弱参照によって保持されます。つまり、直接的または間接的に参照されなくなったすべてのオブジェクトは、ガベージ・コレクションに使用できるようになります。変更追跡の対象オブジェクトが変更されると、該当するオブジェクトはハード参照に移動され、フラッシュされるまでガベージ・コレクションに使用できなくなります。 注意: これらのエンティティ内でフラッシュされなかった変更は、すべて失われます。 アクティブ属性の変更追跡をサポートしないオブジェクトに加えて、新規および削除されたオブジェクトもハード参照によって保持され、ガベージ・コレクションに使用することはできません。 |
|
|
変更追跡の対象外であるオブジェクトを含むすべてのオブジェクトは、弱参照によって保持されます。変更追跡の対象オブジェクト(「@ChangeTracking」を参照)が変更されると、該当するオブジェクトはハード参照に移動され、フラッシュされるまでガベージ・コレクションに使用できなくなります。ただし、アクティブ属性の変更追跡をサポートしないすべてのオブジェクトは、それらの変更がデータベースにフラッシュされる前にガベージ・コレクトされる場合があるため、変更が失われる可能性があります。 新規および削除されたオブジェクトはハード参照によって保持され、ガベージ・コレクションに使用することはできません。 |
使用方法
このプロパティをpersistence.xmlに設定するか、またはcreateEntityManagerFactoryに渡すと、ファクトリによって作成されるすべてのEntityManagersに影響を及ぼします。このプロパティを特定のEntityManagersに適用するには、createEntityManagerメソッドに渡します。
eclipselink.persistencexmlプロパティを使用して、永続性XMLファイルの検索対象となる完全なリソース名を指定します。省略する場合、EclipseLinkでは、デフォルトの場所META-INF/persistence.xmlが使用されます。
|
注意: 現在、このプロパティは標準のモデル・ジェネレータにのみ使用されています。 |
使用方法
このプロパティは、EclipseLinkで構成ファイルを検索するときにのみ使用されます。EJB/Springコンテナ内においてコンテナ管理モードで使用した場合、このファイルの検索と読取りはコンテナによって行われ、この構成は使用されません。
デフォルトの場所を変更する場合は、persisencexml.defaultを使用します。
eclipselink.profilerプロパティを使用して、実行時統計を取得するために使用するパフォーマンス・プロファイラを指定します。
値
表5-88は、この永続性プロパティの値を説明しています。
表5-88 profilerの有効値
| Value | 説明 |
|---|---|
|
|
(デフォルト)パフォーマンス・プロファイラは使用されません。 |
|
|
EclipseLinkパフォーマンス・モニター |
|
|
EclipseLinkパフォーマンス・プロファイラを使用します( |
|
|
問合せ実行およびキャッシュ・ヒットを監視します( このオプションにより、問合せ実行およびキャッシュ・ヒットのパフォーマンスを測定するための低オーバーヘッドの単純な方法が提供されます。複雑なシステムでのパフォーマンス分析に、このオプションを使用することが必要な場合があります。 |
|
|
|
|
カスタム・プロファイラ |
|
eclipselink.session.customizerプロパティを使用して、org.eclipse.persistence.config.SessionCustomizerインタフェースを実装するセッション・カスタマイザ・クラスを指定します。このクラスは、デフォルトの引数を使用しないコンストラクタを提供する必要があります。
使用方法
(org.eclipse.persistence.sessions.Sessionを値として使用する)クラスのカスタマイズ・メソッドを使用すると、拡張されたEclipseLinkセッションAPIにプログラムによってアクセスできます。セッション・カスタマイザ・クラスを使用して、複数のセッション・イベント・リスナーを定義できます。
eclipselink.session.include.descriptor.queriesプロパティを使用して、すべてのディスクリプタの名前付き問合せをセッションにコピーして、エンティティ・マネージャから利用できるようにするかどうかを指定します。
eclipselink.session-event-listenerプロパティを使用して、ブートストラップ中に追加するディスクリプタ・イベント・リスナーを指定します。
eclipselink.session-nameプロパティを使用して、SessionManager内でシングルトン・サーバー・セッションを格納するときに使用する一意の名前を構成します。
使用方法
デフォルトでは、EclipseLinkにより一意のセッション名が生成されます。このプロパティを使用して、一意のカスタム・セッション名を指定できます。
sessions-xmlファイルを使用する場合、このセッション名をsessions-xmlファイルにセッション名として含める必要があります。
図5-1に示すように、eclipselink.sessions-xmlプロパティを使用して、(project.xmlファイルを参照する)指定されたネイティブのsessions.xml構成ファイルにより、JPA注釈やEclipseLink XMLを使用せずに構成およびマッピング情報をロードします。
使用方法
注釈およびデプロイメントXMLを使用するかわりに、eclipselink.sessions-xmlプロパティを使用できます。このプロパティを使用すると、EclipseLinkでは、図5-1に示すように、このメタデータに基づいてインメモリーEclipseLinkセッションおよびプロジェクトが構築されます。EclipseLink sessions.xmlのみを使用してすべてのエンティティの定義などを行った後、永続性マネージャを取得して使用できます。
eclipselink.target-databaseプロパティを使用して、指定したデータベースのカスタム操作やSQL生成を制御する際に使用するデータベースを指定します。
値
表5-94は、この永続性プロパティの値を説明しています。
表5-94 target-databaseの有効値
| Value | 説明 |
|---|---|
|
|
ご使用のデータベースを指定します。
|
例
例5-119に、persistence.xmlファイルでこのプロパティを使用する方法を示します。
例5-119 persistence.xmlでのtarget-databaseの使用
<property name="eclipselink.target-database" value="Oracle"/>
または
<property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.HSQLPlatform"/>
例5-120に、プロパティ・マップでこのプロパティを使用する方法を示します。
eclipselink.target-serverプロパティを使用して、ホスト・コンテナとの統合を有効化するのに使用されるServerPlatformを構成します。
値
表5-95は、この永続性プロパティの値を説明しています。
表5-95 target-serverの有効値
| Value | 説明 |
|---|---|
|
|
ご使用のアプリケーション・サーバーを指定します。
|
使用方法
指定された値に加えて、プラットフォームの完全なクラス名を指定することにより、カスタム・サーバー・プラットフォームを指定できます。
ExternalTransactionControllerを実装するクラス名を指定すると、このコントローラにCustomServerPlatformが設定されます。
eclipselink.temporal.mutableプロパティを使用して、一時フィールド(Date、Calendar)への変更を検出する場合のデフォルトを構成します。
eclipselink.transaction.join-existingプロパティを使用して、永続性コンテキストでJTA管理の(書込み)接続による読取りを強制的に行います
(アクティブなトランザクションが存在する場合)。
使用方法
このプロパティをpersistence.xmlに設定するか、またはcreateEntityManagerFactoryに渡すと、ファクトリによって作成されるすべてのEntityManagersに影響を及ぼします。このプロパティがtrueに設定されている場合、トランザクション中に読み取られたオブジェクトは、更新されないかぎり共有キャッシュに配置されません。または、このプロパティを一部のEntityManagersにのみ適用するには、createEntityManagerメソッドに渡します。
eclipselink.validate-existenceプロパティを使用して、EclipseLinkによりpersist()でオブジェクトの存在を検証するかどうかを指定します。
eclipselink.validation-onlyプロパティを使用して、データ・ソースに接続せずにディスクリプタを初期化し、デプロイメントを検証します。
使用方法
eclipselink.validation-onlyをtrueに設定する場合、自動化されていないクラス名または短縮名を使用して、eclipselink.target-databaseを構成する必要もあります。
eclipselink.weavingプロパティを使用して、EclipseLinkでエンティティ・クラスについてウィービングを実行するかどうかを指定します。EclipseLink JPAでは、ウィービングを使用して、遅延ロード、変更追跡、フェッチ・グループ、内部最適化などについてJPAエンティティを拡張します。
eclipselink.weaving.changetracking永続性プロパティを使用して、次のことを行います。
ウィービングによるAttributeLevelChangeTrackingを有効化します。
すべてのマッピングを含むクラスのみを変更できます。
変更追跡を有効化できます。可変の基本属性については、変更追跡されません。
このプロパティは、ウィービングが有効の場合にのみ有効になります。
eclipselink.weaving.eagerプロパティを使用して、即時リレーションシップについてEclipseLinkでインダイレクションを使用するかどうかを指定します。
使用方法
1対1および多対1のマッピングは、FetchType.EAGERを使用して構成されている場合でも、事実上遅延マッピングとなります。
この拡張機能は、weavingがtrueまたはstaticに構成されている場合にのみ使用できます。詳細は、「weaving」を参照してください。
eclipselink.weaving.fetchgroupsプロパティを使用して、ウィービングによるFetchGroupsを有効化します。有効化すると、ディスクリプタや問合せレベルのFetchGroupsに加えて、レイジー・ダイレクト・マッピングもサポートされます。
FetchGroupsを使用すると、オブジェクトの部分的な読取りおよび書込みが可能になります。フェッチされていない属性にアクセスすると、オブジェクトがリフレッシュ(完全にフェッチ)されます。
このプロパティは、ウィービングが有効の場合にのみ考慮されます。