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
を使用すると、オブジェクトの部分的な読取りおよび書込みが可能になります。フェッチされていない属性にアクセスすると、オブジェクトがリフレッシュ(完全にフェッチ)されます。
このプロパティは、ウィービングが有効の場合にのみ考慮されます。