Oracle® Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス 12c (12.1.3) E57544-01 |
|
前 |
次 |
この章では、EcpliseLink問合せヒント(JPA問合せの拡張機能)の指定方法を説明します。次を使用して、EclipseLink問合せヒント(JPA問合せの拡張機能)を指定できます。
@QueryHint
注釈の使用
orm.xml
またはeclipselink-orm.xml
ファイルへのヒントの組込み
名前付き問合せや動的問合せ(JPQLまたは基準)の実行時におけるsetHint()
メソッドの使用
EclipseLinkでは、次のEclipseLink問合せヒントがサポートされています。
すべてのEclipseLink問合せヒントは、org.eclipse.persistence.config package
内のQueryHints
クラスに定義されています。ヒントを設定する場合は、org.eclipse.persistence.config
パッケージ内の適切な構成クラスでpublic static finalフィールドを使用して、次のような値を設定できます。
HintValues
CacheUsage
PessimisticLock
QueryType
詳細は、次を参照してください。
EclipseLinkの理解の問合せヒントに関する項
EclipseLinkソリューション・ガイドの問合せに関する項
JPA仕様(http://jcp.org/en/jsr/detail?id=317
)の10.3.1項、NamedQuery注釈に関する項
eclipselink.batch
を使用してEclipseLinkにバッチ処理情報を提供すると、関連するオブジェクトに対する後続の問合せがバッチ内で最適化されるため、オブジェクトを1つずつ取得したり、大規模な1つの結合読取りで取得することを回避できます。
値
この問合せヒントでは、単一値のリレーションシップ・パス式を使用できます。
使用方法
eclipselink.batch
ヒントを使用すると、EclipseLinkで重複データの読取りが回避されるため、結合よりも効率的です。
SELECT句にオブジェクトが1つしかない問合せについてのみ、バッチ処理を実行できます
有効値は、単一値のリレーションシップ・パス式です。
注意: ネストされた属性にアクセスするには、ドット表記法を使用します。たとえば、従業員のマネージャのアドレスについてバッチ読取りを実行するには、 |
例
例4-1に、JPA問合せでこのヒントを使用する方法を示します。
例4-1 JPA問合せでのbatchの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.batch", "e.address");
例4-2に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-2 @QueryHint注釈でのbatchの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.BATCH, value="e.address");
関連項目
詳細は、次を参照してください。
EclipseLinkソリューション・ガイドの問合せに関する項
batch.type
がIN
に設定されている場合、eclipselink.batch.size
を使用して、バッチ・サイズを構成します。
値
表4-1は、この永続性プロパティの値を説明しています。
例
例4-3に、JPA問合せでこのヒントを使用する方法を示します。
例4-3 JPA問合せでのbatch.sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.BATCH_SIZE", "3");
例4-4に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-4 @QueryHint注釈でのbatch.sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.BATCH_SIZE, value="3");
関連項目
詳細は、次を参照してください。
eclipselink.batch.type
を使用して、バッチ・フェッチの対象となるすべてのリレーションシップについて問合せで使用するバッチ・フェッチのタイプを指定します。
値
表4-2は、この問合せヒントの値を説明しています。
表4-2 batch.typeの有効値
Value | 説明 |
---|---|
|
(デフォルト)元の問合せの選択基準がバッチ問合せと結合されます。 |
|
結合のかわりに、SQL |
|
SQL |
例
例4-5に、JPA問合せでこのヒントを使用する方法を示します。
例4-5 JPA問合せでのbatch.typeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.BATCH_TYPE", "EXISTS");
例4-6に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-6 @QueryHint注釈でのbatch.typeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.BATCH_TYPE, value="EXISTS");
関連項目
詳細は、次を参照してください。
eclipselink.cache-usage
を使用して、問合せとEclipseLinkキャッシュとの相互作用の方法を指定します。
値
表4-3は、この問合せヒントの有効値を説明しています。
表4-3 org.eclipse.persistence.config.CacheUsageの有効値
Value | 説明 |
---|---|
|
常にデータベースに移動します。 |
|
読取り問合せに主キーのみを比較する式が含まれている場合、メモリー内のオブジェクトに対して式を処理すると、キャッシュ・ヒットを取得できます。 |
|
読取り問合せに少なくとも主キーを比較する式が含まれている場合、メモリー内のオブジェクトに対して式を処理すると、キャッシュ・ヒットを取得できます。 |
|
任意の読取り問合せを構成し、データベースにアクセスする前にキャッシュを完全にチェックできます。 |
|
任意のすべて読取り問合せを構成し、親セッション・キャッシュ(共有キャッシュ)のみをチェックして、データベースにアクセスせずにその問合せからの結果を返すことができます。 |
|
任意の読取り問合せまたはすべて読取り問合せを作業ユニットのコンテキスト内で構成し、作業ユニット内でオブジェクトに加えられた変更に結果を一致させることができます。これには、新規オブジェクト、削除されたオブジェクト、および変更されたオブジェクトが含まれます。 |
|
(デフォルト)このエンティティにEclipseLinkディスクリプタAPIで指定されたキャッシュ構成を使用します。 注意: エンティティのデフォルト値では、キャッシュはチェックされません( |
使用方法
EclipseLink JPAでは、永続性ユニット全体からアクセスされる共有キャッシュを使用します。特定の永続性コンテキストで操作を完了すると、EclipseLinkにより結果が共有キャッシュにマージされ、これにより、エンティティ・マネージャおよび永続性コンテキストがJava SEまたはJava EEで作成されたものであるかどうかにかかわらず、他の永続性コンテキストで結果を使用できるようになります。
エンティティ・マネージャを使用して永続化または削除されたすべてのエンティティは、常に、一貫してキャッシュで保持されます。
例
例4-7に、JPA問合せでこのヒントを使用する方法を示します。
例4-7 JPA問合せでのcache-usageの使用
import org.eclipse.persistence.config.CacheUsage; import org.eclipse.persistence.config.QueryHints; query.setHint(QueryHints.CACHE_USAGE, CacheUsage.CheckCacheOnly);
例4-8に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-8 @QueryHint注釈でのcache-usageの使用
import org.eclipse.persistence.config.CacheUsage; import org.eclipse.persistence.config.TargetDatabase; @QueryHint(name=QueryHints.CACHE_USAGE, value=CacheUsage.CheckCacheOnly);
関連項目
詳細は、次を参照してください。
EclipseLinkの理解のEclipseLinkキャッシュに関する項
EclipseLinkソリューション・ガイドの問合せに関する項
EclipseLinkソリューション・ガイドのパフォーマンスの拡張に関する項
eclipselink.cache-usage.indirection-policy
を(cache-usageとともに)使用して、インメモリー問合せおよびインスタンス化されていないインダイレクションや遅延リレーションシップに関する一致機能の処理を構成します。
値
表4-4は、この問合せヒントの値を説明しています。
表4-4 cache-usage.indirection-policyの有効値
Value | 説明 |
---|---|
|
一致機能でインスタンス化されていないインダイレクションや遅延オブジェクトが発生した場合、一致処理を行うことが想定されます。 |
|
(デフォルト)一致機能でインスタンス化されていないインダイレクションや遅延オブジェクトが発生した場合、例外がスローされます。 |
|
一致機能でインスタンス化されていないインダイレクションや遅延オブジェクトが発生した場合、一致処理を行わないことが想定されます。 |
|
一致機能でインスタンス化されていないインダイレクションや遅延オブジェクトが発生した場合、一致機能がトリガーされます。 |
使用方法
このヒントは、問合せにより、問合せリレーションシップ全体でjoin
が走査される場合にのみ適用されます。
例
例4-9に、JPA問合せでこのヒントを使用する方法を示します。
例4-9 JPA問合せでのcache-usage.indirection-policyの使用
query.setHint(QueryHints.INDIRECTION_POLICY, CacheUsageIndirectionPolicy.Trigger);
例4-10に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-10 @QueryHint注釈でのcache-usage.indirection-policyの使用
@QueryHint(name=QueryHints.INDIRECTION_POLICY, value=CacheUsageIndirectionPolicy.Trigger)
関連項目
詳細は、次を参照してください。
EclipseLinkの理解のEclipseLinkキャッシュに関する項
EclipseLinkソリューション・ガイドの問合せに関する項
eclipselink.cursor
を使用して、CursoredStream
を返すように問合せを構成します。
値
表4-5は、この永続性プロパティの値を説明しています。
使用方法
カーソルは、JDBC ResultSet
のストリームです。カーソルは、結果セットが大きい場合や問合せのうち少数の結果のみが必要な場合に役立ちます。
各next()
を使用してJDBC ResultSet
から次をフェッチする場合、カーソルでEnumeration
を実装して、それによって生成されるオブジェクトや値を構築します。カーソルにはJDBCライブ接続が必要であるため、この接続は保持されます。カーソルのリソースを解放するには、close()
を使用する必要があります。
カーソルにアクセスするには、JPA問合せからgetSingleResult()
を使用するか、またはJpaQuery
からgetResultCursor()
を使用します。
ヒント: 結果のページを取得するには、カーソルのかわりに |
例
例4-11に、JPA問合せでこのヒントを使用する方法を示します。
例4-11 JPA問合せでのcursorの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.cursor", "TRUE");
例4-12に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-12 @QueryHint注釈でのcursorの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.CURSOR, value="TRUE");
関連項目
詳細は、次を参照してください。
ecliplselink.composite-unit.member問合せヒントを使用して、問合せの実行対象であるコンポジット・メンバー永続性ユニットの名前を指定します。コンポジット永続性ユニットで実行されるネイティブ問合せに対して使用する必要があります。
値
表4-6は、この永続性プロパティの値を説明しています。
例
例4-13に、JPA問合せでこのヒントを使用する方法を示します。
例4-13 JPA問合せでのcomposite-unit.memberの使用
import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.composite-unit.member", "mypersistentunit");
例4-14に、@QueryHint
注釈でこのヒントを使用する方法を示します。
eclipselink.cursor.initial-size
を使用して、指定した初期サイズでCursoredStreamを返すように問合せを構成します。
値
表4-7は、この問合せヒントの値を説明しています。
表4-7 cursor.initial-sizeの有効値
Value | 説明 |
---|---|
|
|
例
例4-15に、JPA問合せでこのヒントを使用する方法を示します。
例4-15 JPA問合せでのcursor.initial-sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.cursor_initial_size", "10");
例4-16に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-16 @QueryHint注釈でのcursor.initial-sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.CURSOR_INITIAL_SIZE, value="10");
関連項目
詳細は、次を参照してください。
eclipselink.cursor.page-size
を使用して、指定したページ・サイズでCursoredStream
を返すように問合せを構成します。
値
表4-8は、この問合せヒントの値を説明しています。
表4-8 cursor.page-sizeの有効値
Value | 説明 |
---|---|
|
オブジェクトのバッファが空の場合に、 |
例
例4-17に、JPA問合せでこのヒントを使用する方法を示します。
例4-17 JPA問合せでのcursor.page-sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.CURSOR_PAGE_SIZE", "10");
例4-18に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-18 @QueryHint注釈でのcursor.page-sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.CURSOR_PAGE_SIZE, value="10");
関連項目
詳細は、次を参照してください。
eclipselink.exclusive-connection
を使用して、問合せで排他(トランザクション/書込み)接続を使用するかどうかを指定します。
値
表4-9は、この問合せヒントの値を説明しています。
使用方法
これは、EXCLUSIVE_CONNECTION_MODE
プロパティが永続性ユニット(VPDなど)に設定されている場合にのみ有効です。jdbc.exclusive-connection.mode
が構成されている場合、この問合せヒントを使用して、問合せが排他接続によって実行されるようにします。
これは、データベース・セキュリティが原因で、セキュアな表に結合する問合せを共有接続を介して実行したときに正しい結果が返されない場合など、特定のケースで必要となることがあります。
例
例4-19に、JPA問合せでこのヒントを使用する方法を示します。
例4-19 JPA問合せでのexclusive-connectionの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.EXCLUSIVE_CONNECTION", "TRUE");
例4-20に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-20 @QueryHint注釈でのexclusive-connectionの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.EXCLUSIVE_CONNECTION, value="TRUE");
関連項目
詳細は、次を参照してください。
eclipselink.flush
を使用して、問合せの実行前に、問合せで永続性コンテキストをフラッシュするかどうかを指定します。
値
表4-10は、この問合せヒントの値を説明しています。
使用方法
永続性コンテキスト内で変更されたオブジェクトに問合せがアクセスする可能性がある場合、問合せで変更が認識されるようにフラッシュをトリガーする必要があります。問合せで変更を認識する必要がない場合は、パフォーマンスを向上させるためにフラッシュを回避する必要があります。
フラッシュ・モードを永続性ユニット・プロパティとして構成することもできます。詳細は、「flush-clear.cache」を参照してください。
問合せ変更について一致機能を使用することもでき、この場合、フラッシュを実行する必要はありません。詳細は、「cache-usage」を参照してください。
例
例4-21に、JPA問合せでこのヒントを使用する方法を示します。
例4-21 JPA問合せでのflushの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.FLUSH", "TRUE");
例4-22に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-22 @QueryHint注釈でのflushの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.FLUSH, value="TRUE");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解のEclipseLinkキャッシュに関する項
EclipseLinkソリューション・ガイドの問合せに関する項
ある時点におけるオブジェクトの状態を問い合せるように、問合せを構成します。
値
表4-11は、この問合せヒントの値を説明しています。
使用方法
問合せの実行と結果はともに、データベースSCNを基準にして存在したデータベースに従います。
注意: この問合せヒントまたはOracle Flashbackを使用する際には、履歴サポートを含むクラスが必要となります。 |
例
例4-23に、JPA問合せでこのヒントを使用する方法を示します。
例4-23 JPA問合せでのhistory.as-ofの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.AS_OF", "2012/10/15 11:21:18.2");
例4-24に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-24 @QueryHint注釈でのhistory.as-ofの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.AS_OF, value="2012/10/15 11:21:18.2");
関連項目
詳細は、次を参照してください。
『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』のOracle Flashback Technologyの使用に関する項
eclipselink.history.as-of.scn
を使用して、データベースSCN (システム変更番号)時点でのオブジェクトの状態を問い合せるように問合せを構成します。
値
表4-12は、この問合せヒントの値を説明しています。
使用方法
注意: この問合せヒントには、Oracle Flashbackサポートが必要です。 |
例
例4-25に、JPA問合せでこのヒントを使用する方法を示します。
例4-25 JPA問合せでのhistory.as-of.scnの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.AS_OF_SCN", "3");
例4-26に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-26 @QueryHint注釈でのhistory.as-of.scnの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.AS_OF_SCN, value="3");
関連項目
詳細は、次を参照してください。
『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』のOracle Flashback Technologyの使用に関する項
eclipselink.inheritance.outer-join
を使用して、すべてのサブクラスにouter-joinを使用するように問合せを構成します。
値
表4-13は、この問合せヒントの値を説明しています。
表4-13 inheritance.outer-joinの有効値
Value | 説明 |
---|---|
|
outer-joinを使用します。 |
|
(デフォルト)outer-joinは使用せず、サブクラスごとに個別の問合せを実行します。 |
使用方法
この問合せヒントは、ルートまたはブランチの継承クラスについての問合せで使用できます。
DescriptorCustomizer
(「descriptor.customizer」を参照)を使用して、この動作を構成することもできます。
注意: これは、正しい順序付け、 |
例
例4-27に、JPA問合せでこのヒントを使用する方法を示します。
例4-27 JPA問合せでのinheritance.outer-joinの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.INHERITANCE_OUTER_JOIN", "TRUE");
例4-28に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-28 @QueryHint注釈でのinheritance.outer-joinの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.INHERITANCE_OUTER_JOIN, value="TRUE");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解の継承に関する項
EclipseLinkソリューション・ガイドのパフォーマンスの拡張に関する項
eclipselink.jdbc.bind-parameters
を使用して、問合せでパラメータ・バインド(パラメータ化されたSQL)を使用するかどうかを指定します。
値
表4-14は、この問合せヒントの有効値を説明しています。
表4-14 org.eclipse.persistence.config.HintValuesの有効値
Value | 説明 |
---|---|
|
すべてのパラメータがバインドされます。 |
|
すべてのパラメータがバインドされるわけではありません。 |
|
(デフォルト) EclipseLinkセッションのデータベース・ログイン時に行ったパラメータ・バインド設定が使用されます(デフォルトではtrue)。 |
使用方法
デフォルトでは、EclipseLinkでのパラメータ・バインドおよび文のキャッシュは有効化されています。そうすることで、EclipseLinkではプリコンパイルされたSQL文を使用し、すべてのSQLパラメータをバインドして、プリコンパイルされたSQL文をキャッシュします。この問合せを再実行するときにはSQLのプリコンパイルが不要になるため、パフォーマンスが向上します。
persistence.xml
ファイルで、永続性ユニットのパラメータ・バインドを構成することもできます(Java SE環境で使用する場合)。
例
例4-29に、JPA問合せでこのヒントを使用する方法を示します。
例4-29 JPA問合せでのbind-parametersの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint(QueryHints.BIND_PARAMETERS, HintValues.TRUE);
例4-30に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-30 @QueryHint注釈でのbind-parametersの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.TargetDatabase; @QueryHint(name=QueryHints.BIND_PARAMETERS, value=HintValues.TRUE);
例4-31に、永続性ユニットpersistence.xml
ファイルでパラメータ・バインドを構成する方法を示します。
例4-31 パラメータ・バインド永続性ユニット・プロパティの指定
<property name="eclipselink.jdbc.bind-parameters" value="false"/>
または、次のようにproperty
マップをインポートします。
import org.eclipse.persistence.config.PersistenceUnitProperties; propertiesMap.put(PersistenceUnitProperties.NATIVE_SQL, "true");
関連項目
詳細は、次を参照してください。
EclipseLinkソリューション・ガイドのパラメータ化されたSQLとSQL文のキャッシュに関する項
問合せによりそのJDBC文をキャッシュするかどうかを指定します。
値
表4-15は、この問合せヒントの値を説明しています。
使用方法
これにより、問合せでパラメータ化されたSQLを文キャッシュとともに使用できます。また、文キャッシュが永続性ユニットについて有効になっている場合、特定の問合せでその文をキャッシュしないようにすることもできます。
ヒント: 通常、問合せごとではなく、永続性ユニット全体について文キャッシュを設定する必要があります(「jdbc.cache-statements」を参照)
|
例
例4-32に、JPA問合せでこのヒントを使用する方法を示します。
例4-32 JPA問合せでのjdbc.cache-statementの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.CACHE_STATEMENT", "TRUE");
例4-33に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-33 @QueryHint注釈でのjdbc.cache-statementの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.CACHE_STATEMENT, value="TRUE");
関連項目
詳細は、次を参照してください。
EclipseLinkソリューション・ガイドのパフォーマンスの拡張に関する項
追加行が必要な場合に、eclipselink.jdbc.fetch-size
を使用して、データベースからフェッチする行数を指定します。
注意: このプロパティにはJDBCドライバのサポートが必要です。 |
値
表4-16は、この問合せヒントの有効値を説明しています。
表4-16 eclipselink.jdbc.fetch-sizeの有効値
Value | 説明 |
---|---|
|
(デフォルトは 0の場合、JDBCドライバのデフォルトが使用されます。 |
使用方法
多数のオブジェクトを返す問合せに対しては、問合せで使用される行フェッチ・サイズを構成すると、選択条件を満たすのに必要なデータベース・ヒット数が少なくて済み、パフォーマンスが向上します。
デフォルトで、ほとんどのJDBCドライバのフェッチ・サイズは10であるため、1000個のオブジェクトを読み取る場合、フェッチ・サイズを256に増やすと、問合せ結果のフェッチに要する時間が大幅に短縮される場合があります。最適なフェッチ・サイズが常に明白であるとはかぎりません。通常は、予想される総結果サイズの半分または4分の1がフェッチ・サイズとして最適です。
結果セットのサイズが不確かな場合に、誤ってフェッチ・サイズの設定を大きく、または小さくしすぎると、パフォーマンスが低下する可能性があります。
例
例4-34に、JPA問合せでこのヒントを使用する方法を示します。
例4-34 JPA問合せでのjdbc.fetch-sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.JDBC_FETCH_SIZE", "100");
例4-35に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-35 @QueryHint注釈でのjdbc.fetch-sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.JDBC_FETCH_SIZE, value="100");
関連項目
詳細は、次を参照してください。
EclipseLinkソリューション・ガイドの問合せに関する項およびパフォーマンスの拡張に関する項
EclipseLinkの理解のEclipseLinkキャッシュに関する項
eclipselink.jdbc.first-result
を使用して、問合せで結果内の指定された行数をスキップするかどうかを指定します。
値
表4-17は、この問合せヒントの値を説明しています。
使用方法
この問合せヒントは、JPA問合せsetFirstResults()
に類似していますが、NamedQuerys
のメタデータに設定できます。
例
例4-36に、JPA問合せでこのヒントを使用する方法を示します。
例4-36 JPA問合せでのjdbc.first-resultの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.JDBC_FIRST_RESULT", "10");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解の問合せの概念に関する項
eclipselink.jdbc.max-rows
を使用して、返される最大行数を指定します。問合せにより、指定された数より多くの行が返された場合、後続行は返されません。
値
表4-18は、この問合せヒントの有効値を説明しています。
使用方法
このヒントはJPQL setMaxResults()
に類似していますが、NamedQueries
のメタデータ内で指定できます。
例
例4-37に、JPA問合せでこのヒントを使用する方法を示します。
例4-37 JPA問合せでのjdbc.max-rowsの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.JDBC_MAX_ROWS", "100");
例4-38に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-38 @QueryHint注釈でのjdbc.max-rowsの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.JDBC_MAX_ROWS, value="100");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解の問合せの概念に関する項
eclipselink.jdbc.native-connection
を使用して、問合せにネイティブJDBC接続が必要がどうかを指定します。
値
表4-19は、この永続性プロパティの値を説明しています。
使用方法
これは、独自のプロキシにJDBC接続をラップするDataSource
が実装されたサーバー・プラットフォームでの問合せに必要となる場合があります。問合せにカスタムJDBCアクセスが必要な場合、ネイティブ接続が必要となる可能性があります。
ネイティブ接続を使用できるようにするには、ServerPlatform
を永続性プロパティとして設定する必要があります。ネイティブ接続が必要であるとEclipseLinkですでに認識されている機能については、eclipselink.jdbc.native-connectionがデフォルトでtrue
に設定されます。
例
例4-39に、JPA問合せでこのヒントを使用する方法を示します。
例4-39 JPA問合せでのjdbc.native-connectionの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.NATIVE_CONNECTION", "TRUE");
関連項目
詳細は、次を参照してください。
eclipselink.jdbc.parameter-delimiter
を使用して、(デフォルトのハッシュ文字#のかわりに)カスタム・パラメータのバインディング文字を指定します。
値
表4-20は、この問合せヒントの値を説明しています。
例
例4-40に、JPA問合せでこのヒントを使用する方法を示します。
例4-40 JPA問合せでのjdbc.parameter-delimiterの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.PARAMETER_DELIMITER", ",");
例4-41に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-41 @QueryHint注釈でのjdbc.parameter-delimiterの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.PARAMETER_DELIMITER, value=",");
関連項目
詳細は、次を参照してください。
eclipselink.jdbc.timeout
を使用して、DatabaseExcpetion
をスローする前に、EclipseLinkで問合せ結果を待機する(タイムアウトする)秒数を指定します。
注意: このプロパティにはJDBCドライバのサポートが必要です。 |
値
表4-21は、この問合せヒントの有効値を説明しています。
表4-21 eclipselink.jdbc.timeoutの有効値
Value | 説明 |
---|---|
|
(デフォルトは 0の場合、EclipseLinkで問合せを待機してタイムアウトすることはありません。 |
使用方法
一部のデータベース・プラットフォームではロック・タイムアウトをサポートしていない場合があります。それらのプラットフォームでは、JDBC_TIMEOUT
ヒントを設定できます。
例
例4-42に、JPA問合せでこのヒントを使用する方法を示します。
例4-42 JPA問合せでのjdbc.timeoutの使用
import org.eclipse.persistence.config.CacheUsage;
import org.eclipse.persistence.config.QueryHints;
query.setHint(QueryHints.JDBC_TIMEOUT, "100");
例4-43に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-43 @QueryHint注釈でのjdbc.timeoutの使用
import org.eclipse.persistence.config.CacheUsage;
import org.eclipse.persistence.config.TargetDatabase;
@QueryHint(name=QueryHints.JDBC_TIMEOUT, value="100");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解のJPA問合せヒントに関する項
EclipseLinkソリューション・ガイドのパフォーマンスの拡張に関する項
eclipselink.join-fetch hint
を使用して、属性を問合せに結合します。
注意: ネストされた属性にアクセスするには、ドット表記法を使用します。たとえば、従業員のマネージャのアドレスについてバッチ読取りを実行するには、 |
値
表4-22は、この問合せヒントの有効値を説明しています。
使用方法
このヒントはeclipselink.batch
に類似しています。関連オブジェクトの後続問合せを1つの大規模な結合読取りで取得するかわりに、バッチで最適化できます。
eclipselink.join-fetch
ヒントは、マルチレベルのフェッチ結合が可能であるという点で、JPQL結合とは異なります。
例
例4-44に、JPA問合せでこのヒントを使用する方法を示します。
例4-44 JPA問合せでのjoin-fetchの使用
import org.eclipse.persistence.config.HintValues;
import org.eclipse.persistence.config.QueryHints;
query.setHint("eclipselink.join-fetch", "e.address");
例4-45に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-45 @QueryHint注釈でのjoin-fetchの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.FETCH, value="e.address");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解の問合せの最適化に関する項
JPA仕様(http://jcp.org/en/jsr/detail?id=317
)のフェッチ結合に関する項
EclipseLinkソリューション・ガイドのパフォーマンスの拡張に関する項
eclipselink.left-join-fetch
を使用して問合せを最適化することにより、関連オブジェクトは個別に問合せが行われるのではなく、問合せに結合されます。
値
表4-23は、この問合せヒントの値を説明しています。
使用方法
この問合せヒントを使用して、JPQLでサポートされていないネストされた結合フェッチを作成できます。また、eclipselink.left-join-fetch
を使用して、ネイティブ問合せを含む結合フェッチを作成することもできます。
注意: この問合せヒントでは、nullまたは空の値を使用できる |
例
例4-46に、JPA問合せでこのヒントを使用する方法を示します。
例4-46 JPA問合せでのleft-join-fetchの使用
import org.eclipse.persistence.config.HintValues;
import org.eclipse.persistence.config.QueryHints;
query.setHint("eclipselink.LEFT_FETCH", "STRING");
例4-47に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-47 @QueryHint注釈でのleft-join-fetchの使用
import org.eclipse.persistence.config.HintValues;
import org.eclipse.persistence.config.QueryHints;
@QueryHint(name=QueryHints.LEFT_FETCH, value="STRING");
関連項目
JPA仕様(http://jcp.org/en/jsr/detail?id=317
)のフェッチ結合に関する項
EclipseLinkソリューション・ガイドのパフォーマンスの拡張に関する項
eclipselink.load-group
を使用して、ロード・グループ・オブジェクトを使用するように問合せを構成します。
値
表4-24は、この永続性プロパティの値を説明しています。
使用方法
ロード・グループを使用すると、EclipseLinkにより、グループのすべてのリレーショナル属性が確実にロードされます。LoadGroupsは、オブジェクトを返す問合せについてのみサポートされます(1つの別名のみをSELECT句にすることができます)。
例
例4-48に、JPA問合せでこのヒントを使用する方法を示します。
例4-48 JPA問合せでのload-groupの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.LOAD_GROUP", MyLoadGroup);
例4-49に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-49 @QueryHint注釈でのload-groupの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.LOAD_GROUP, value="lg");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解のAttributeGroupのタイプおよび操作に関する項
eclipselink.load-group.attribute
を使用して、問合せで属性のリストを含むload-groupを使用するかどうかを指定します。
使用方法
個別のヒントを使用して、各属性を定義する必要があります。問合せにより、ロード・グループに定義されたすべてのリレーショナル属性がロードされます。
LoadGroupsは、オブジェクトを返す問合せについてのみサポートされます(1つの別名のみをSELECT句にすることができます)。ローカル属性とネストされた属性の両方がサポートされます。
関連項目
詳細は、次を参照してください。
eclipselink.maintain-cache
を使用して、問合せ結果をセッション・キャッシュでキャッシュするかどうかを制御します。
値
表4-25は、この問合せヒントの有効値を説明しています。
使用方法
eclipselink.maintain-cache
ヒントでは、現行の永続性コンテキストに影響を及ぼすことなく、現行のデータベースの内容を問い合せる方法が提供されています。これにより、管理対象外のインスタンスを返すように問合せが構成されるため、このヒントを使用して問合せが行われるエンティティへのすべての更新を永続性コンテキストにマージする必要があります。
例
例4-50に、JPA問合せでこのヒントを使用する方法を示します。
例4-50 JPA問合せでのmaintain-cacheの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint(QueryHints.MAINTAIN_CACHE, HintValues.FALSE);
例4-51に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-51 @QueryHint注釈でのmaintain-cacheの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.MAINTAIN_CACHE, value=HintValues.FALSE);
関連項目
詳細は、次を参照してください。
EclipseLinkソリューション・ガイドのクラスタ内のEclipseLinkアプリケーションのスケーリングに関する項
EclipseLinkソリューション・ガイドのパフォーマンスの拡張に関する項
EclipseLinkの理解のEclipseLinkキャッシュに関する項
eclipselink.pessimistic-lock
を使用して、EclipseLinkでペシミスティック・ロックを使用するかどうかを指定します。
値
表4-26は、この問合せヒントの有効値を説明しています。
表4-26 org.eclipse.persistence.config.PessimisticLockの有効値
Value | 説明 |
---|---|
|
(デフォルト)ペシミスティック・ロックは使用されません。 |
|
EclipseLinkにより、 |
|
EclipseLinkにより、 |
使用方法
ペシミスティック・ロックを使用する主な利点は、ロックが取得されると、編集が正常に行われることが保証される点です。これは、オプティミスティック・ロックが原因で多数のオプティミスティック・ロック・エラーが発生する可能性がある高並列アプリケーションにおいて有用です。
ペシミスティック・ロックの短所の1つは、このロックでは追加のデータベース・リソースが必要となるため、編集中にデータベースのトランザクションと接続を保持する必要があるという点です。また、ペシミスティック・ロックがデッドロックの原因となり、同時実行性の問題が発生する場合もあります。
例
例4-52に、JPA問合せでこのヒントを使用する方法を示します。
例4-52 JPA問合せでのpessimistic-lockの使用
import org.eclipse.persistence.config.PessimisticLock; import org.eclipse.persistence.config.QueryHints; query.setHint(QueryHints.PESSIMISTIC_LOCK, PessimisticLock.LockNoWait);
例4-53に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-53 @QueryHint注釈でのpessimistic-lockの使用
import org.eclipse.persistence.config.PessimisticLock; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.PESSIMISTIC_LOCK, value=PessimisticLock.LockNoWait);
関連項目
詳細は、次を参照してください。
EclipseLinkソリューション・ガイドのクラスタ内のEclipseLinkアプリケーションのスケーリングに関する項
EclipseLinkの理解の問合せの理解に関する項
EclipseLinkの理解のEclipseLinkプロジェクトのビルディング・ブロックに関する項
eclipselink.prepare
を使用して、問合せを実行するたびにそのSQLを準備(つまり生成)するかどうかを指定します。
値
表4-27は、この問合せヒントの値を説明しています。
表4-27 prepareの有効値
Value | 説明 |
---|---|
true |
EclipseLinkで問合せが実行されるたびに、SQLが生成されます。 |
|
(デフォルト) EclipseLinkで問合せが最初に実行されたときにのみ、SQLが生成されます。 |
使用方法
デフォルトでは、EclipseLinkにより実行ごとにSQLが再生成されることはありません。このため、パフォーマンスが向上する場合があります。
動的SQLを必要とする問合せでは(null
パラメータを処理する場合など)、eclipselink.prepare
をfalseに設定します。
例
例4-54に、JPA問合せでこのヒントを使用する方法を示します。
例4-54 JPA問合せでのprepareの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.PREPARE", "TRUE");
例4-55に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-55 @QueryHint注釈でのprepareの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.PREPARE, value="TRUE");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解の問合せの理解に関する項
eclipselink.query-results-cache
を使用して、問合せで結果キャッシュを使用することを指定します。
値
表4-28は、この永続性プロパティの値を説明しています。
表4-28 query-results-cacheの有効値
Value | 説明 |
---|---|
|
(デフォルト) |
|
問合せ結果がキャッシュされます。 |
|
問合せ結果はキャッシュされません。 |
使用方法
デフォルトでは、問合せにより100個の問合せ結果がキャッシュされますが(「query-results-cache.size」を参照)、同じ引数を含む同じ名前付き問合せが再実行される場合、EclipseLinkはデータベースをスキップしてキャッシュ結果を返します。
注意: 問合せキャッシュは、オブジェクト・キャッシュに依存しない異なるキャッシュです。 |
例
例4-56に、JPA問合せでこのヒントを使用する方法を示します。
例4-56 JPA問合せでのquery-results-cacheの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.QUERY_RESULTS_CACHE", "TRUE");
例4-57に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-57 @QueryHint注釈でのquery-results-cacheの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.QUERY_RESULTS_CACHE, value="TRUE");
例4-58に、orm.xml
ファイルでこのヒントを使用する方法を示します。
例4-58 orm.xmlファイルでのquery-results-cacheの使用
<?xml version="1.0"?>
<entity-mappings
xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_4.xsd"
version="2.4">
<entity name="Employee" class="org.acme.Employee" access="FIELD">
<named-query name="findAllEmployeesInCity" query="Select e from Employee e where e.address.city = :city">
<hint name="eclipselink.query-results-cache" value="true"/>
<hint name="eclipselink.query-results-cache.size" value="500"/>
</named-query>
...
</entity>
</entity-mappings>
関連項目
詳細は、次を参照してください。
EclipseLinkの理解の問合せ結果キャッシュに関する項
eclipselink.query-results-cache.expiry
を使用して、問合せの結果キャッシュの有効時間(つまり、有効期限)を設定します。
値
表4-29は、この問合せヒントの値を説明しています。
使用方法
デフォルトでは、問合せ結果キャッシュの結果は失効しません。
例
例4-59に、JPA問合せでこのヒントを使用する方法を示します。
例4-59 JPA問合せでのquery-results-cache.expiryの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.QUERY_RESULTS_CACHE_EXPIRY", "100");
例4-60に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-60 @QueryHint注釈でのquery-results-cache.expiryの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.QUERY_RESULTS_CACHE_EXPIRY, value="100");
関連項目
詳細は、次を参照してください。
eclipselink.query-results-cache.expiry-time-of-day
を使用して、問合せ結果キャッシュの有効期限の時刻を設定します。
値
表4-30は、この永続性プロパティの値を説明しています。
使用方法
デフォルトでは、問合せ結果キャッシュの結果は失効しません。
例
例4-61に、JPA問合せでこのヒントを使用する方法を示します。
例4-61 JPA問合せでのquery-results-cache.expiry-time-of-dayの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.QUERY_RESULTS_CACHE_EXPIRY_TIME_OF_DAY", "11:15:34");
例4-62に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-62 @QueryHint注釈でのquery-results-cache.expiry-time-of-dayの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.QUERY_RESULTS_CACHE_EXPIRY_TIME_OF_DAY, value="11:15:34");
関連項目
詳細は、次を参照してください。
eclipselink.query-results-cache.ignore-nullを使用して、EclipseLinkがnull
の問合せ結果をキャッシュするかどうかを指定します。
値
表4-31は、この問合せヒントの値を説明しています。
表4-31 query-results-cache.ignore-nullの有効値
Value | 説明 |
---|---|
|
nullの結果は無視されます(つまり、結果はキャッシュされません)。 |
|
(デフォルト) |
使用方法
この問合せヒントを使用すると、2次キー索引として問合せキャッシュを使用して、新規オブジェクトの挿入が可能になります。
例
例4-63に、JPA問合せでこのヒントを使用する方法を示します。
例4-63 JPA問合せでのquery-results-cache.ignore-nullの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.QUERY_RESULTS_CACHE_IGNORE_NULL", "TRUE");
例4-64に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-64 @QueryHint注釈でのquery-results-cache.ignore-nullの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.QUERY_RESULTS_CACHE_IGNORE_NULL, value="TRUE");
関連項目
詳細は、次を参照してください。
eclipselink.query-results-cache.randomize-expiry
を使用して、有効期間(query-results-cache.expiry)の設定値の10%をランダム化することを指定します。
値
表4-32は、この問合せヒントの値を説明しています。
表4-32 query-results-cache.randomize-expiryの有効値
Value | 説明 |
---|---|
|
有効期間の10%がランダム化されます。 |
|
(デフォルト)有効期間はランダム化されません。 |
使用方法
この問合せヒントを使用して、指定時刻に失効する複数のキャッシュ値によるボトルネックを回避します。
例
例4-65に、JPA問合せでこのヒントを使用する方法を示します。
例4-65 JPA問合せでのquery-results-cache.randomize-expiryの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.QUERY_RESULTS_CACHE_RANDOMIZE_EXPIRY", "TRUE");
例4-66に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-66 @QueryHint注釈でのquery-results-cache.randomize-expiryの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.QUERY_RESULTS_CACHE_RANDOMIZE_EXPIRY, value="TRUE");
関連項目
詳細は、次を参照してください。
eclipselink.query-results-cache.size
を使用して、問合せの結果キャッシュの固定サイズを設定します。
値
表4-33は、この問合せヒントの値を説明しています。
使用方法
query-results-cacheを使用する場合、同じ引数を含む同じ名前付き問合せが再実行されると、EclipseLinkはデータベースをスキップしてキャッシュ結果を返します。
注意: 問合せに引数が含まれていない場合、(結果が1つのみのため)サイズ1が使用されます。 |
例
例4-67に、JPA問合せでこのヒントを使用する方法を示します。
例4-67 JPA問合せでのquery-results-cache.sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.QUERY_RESULTS_CACHE_SIZE", "150");
例4-68に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-68 @QueryHint注釈でのquery-results-cache.sizeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.QUERY_RESULTS_CACHE_SIZE, value="150");
関連項目
詳細は、次を参照してください。
eclipselink.query-results-cache.type
を使用して、問合せの結果キャッシュに使用するキャッシュ・タイプを設定します。
値
表4-34は、この問合せヒントの値を説明しています。
表4-34 query-results-cache.typeの有効値
Value | 説明 |
---|---|
Cache |
(デフォルト)固定サイズのLRUキャッシュ( |
Full |
完全なキャッシュと保証されたアイデンティティを提供します。 |
Hard_Weak |
サブキャッシュでハード参照を使用すること以外は、SOFT_WEAKと類似しています。 |
なし |
キャッシュされません。 |
Soft |
ソフト参照を使用してマップがオブジェクトを保持すること以外は、FULLに類似しています。 |
Soft_Weak |
最も使用頻度の高いサブキャッシュを保持すること以外は、WEAKに類似しています。 |
Weak |
弱参照を使用してマップがオブジェクトを保持すること以外は、FULLに類似しています。 |
使用方法
注意 NONEを使用した場合、オブジェクト・アイデンティティは保持されず、オブジェクトはキャッシュされません。 |
例
例4-69に、JPA問合せでこのヒントを使用する方法を示します。
例4-69 JPA問合せでのquery-results-cache.typeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.QUERY_RESULTS_CACHE_TYPE", "FULL");
例4-70に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-70 @QueryHint注釈でのquery-results-cache.typeの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.QUERY_RESULTS_CACHE_TYPE, value="FULL");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解のEclipseLinkキャッシュに関する項
EclipseLinkソリューション・ガイドのクラスタ内のEclipseLinkアプリケーションのスケーリングに関する項
eclipselink.query-type
を使用して、問合せに使用するEclipseLink問合せタイプを指定します。
値
表4-35は、この問合せヒントの有効値を説明しています。
表4-35 org.eclipse.persistence.config.QueryTypeの有効値
Value | 説明 |
---|---|
|
(デフォルトは |
|
|
|
|
|
|
使用方法
EclipseLinkでは、ほとんどのJPQL問合せについて、デフォルトでorg.eclipse.persistence.queries.ReportQuery
またはorg.eclipse.persistence.queries.ReadAllQuery
が使用されます。eclipselink.query-type
ヒントを使用すると、単一オブジェクトを返す問合せに、org.eclipse.persistence.queries.ReadObjectQuery
などの別の問合せタイプを指定できます。
例
例4-71に、JPA問合せでこのヒントを使用する方法を示します。
例4-71 JPA問合せでのquery-typeの使用
import org.eclipse.persistence.config.QueryType; import org.eclipse.persistence.config.QueryHints; query.setHint(QueryHints.QUERY_TYPE, QueryType.ReadObject);
例4-72に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-72 @QueryHint注釈でのquery-typeの使用
import org.eclipse.persistence.config.QueryType; import org.eclipse.persistence.config.TargetDatabase; @QueryHint(name=QueryHints.QUERY_TYPE, value=QueryType.ReadObject);
関連項目
詳細は、次を参照してください。
EclipseLinkの理解の問合せに関する項
eclipselink.read-only
を使用して、問合せから読取り専用結果を取得します。
値
表4-36は、この問合せヒントの有効値を説明しています。
使用方法
非トランザクションの読取り操作では、要求されたエンティティ・タイプが共有キャッシュに格納される場合、デタッチされたコピーではなく、共有インスタンスが返されるように要求できます。
注意: 共有キャッシュから返されるオブジェクトを変更しないでください。 |
例
例4-73に、JPA問合せでこのヒントを使用する方法を示します。
例4-73 JPA問合せでのread-onlyの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint(QueryHints.READ_ONLY, HintValues.TRUE);
例4-74に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-74 @QueryHint注釈でのread-onlyの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.READ_ONLY, value=HintValues.TRUE);
関連項目
詳細は、次を参照してください。
『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』のOracle EclipseLink JPAのパフォーマンス・チューニングに関する項
eclipselink.refresh
を使用して、問合せにより返されたオブジェクトでEclipseLinkのセッション・キャッシュを更新するかどうかを指定します。
値
表4-37は、この問合せヒントの有効値を説明しています。
表4-37 eclipselink.refreshの有効値
Value | 説明 |
---|---|
|
キャッシュがリフレッシュされます。 |
|
(デフォルト)キャッシュはリフレッシュされません。 |
使用方法
eclipselink.refresh
問合せヒントは、キャッシュおよび永続性コンテキスト内に生成されているオブジェクトが問合せによってデータベースの現在の状態でリフレッシュされるように構成します。また、フラッシュが行われていない場合は、共有キャッシュ内のオブジェクトもリフレッシュされます。この問合せの実行前にフラッシュがトリガーされない場合、オブジェクトに行われたフラッシュされていない変更は失われます)。リフレッシュは、REFRESH_CASCADE
ヒントの値に基づいてリレーションシップにカスケードされます。
例
例4-75に、JPA問合せでこのヒントを使用する方法を示します。
例4-75 JPA問合せでのrefreshの使用
import org.eclipse.persistence.config.HintValues;
import org.eclipse.persistence.config.QueryHints;
query.setHint(QueryHints.REFRESH, HintValues.TRUE);
例4-76に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-76 @QueryHint注釈でのrefreshの使用
import org.eclipse.persistence.config.HintValues;
import org.eclipse.persistence.config.QueryHints;
@QueryHint(name=QueryHints.REFRESH, value=HintValues.TRUE);
関連項目
詳細は、次を参照してください。
eclipselink.refresh.cascade
を使用して、リフレッシュ問合せにより、リフレッシュをリレーションシップにカスケードするかどうかを指定します。
値
表4-38は、この問合せヒントの有効値を説明しています。
表4-38 eclipselink.refresh.cascadeの有効値
Value | 説明 |
---|---|
|
すべての関連付けにカスケードされます。 |
|
メタデータをマッピングすることにより、カスケードされます。 |
|
私有のリレーションシップにカスケードされます。 |
|
カスケードされません。 |
使用方法
リフレッシュを実行するには、refresh
ヒントを使用する必要もあります。
例
例4-77に、JPA問合せでこのヒントを使用する方法を示します。
例4-77 JPA問合せでのrefresh.cascadeの使用
import org.eclipse.persistence.config.HintValues
import oorg.eclipse.persistence.config.QueryHints;
query.setHint(QueryHints.REFRESH_CASCADE, CascadePolicy.CascadeAllParts);
例4-78に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-78 @QueryHint注釈でのrefresh.cascadeの使用
import org.eclipse.persistence.config.HintValues;
import org.eclipse.persistence.config.QueryHints;
@QueryHint(name=QueryHints.REFRESH_CASCADE, value=CascadePolicy.CascadeAllParts);
関連項目
詳細は、次を参照してください。
eclipselink.result-collection-type
を使用して、問合せ結果にコレクション・クラス実装を構成します。
値
表4-39は、この問合せヒントの値を説明しています。
表4-39 result-collection-typeの有効値
Value | 説明 |
---|---|
|
|
|
(デフォルト) |
使用方法
List
ではないCollection
型を使用する場合、getResultList()
のかわりに、getResultCollection()
またはgetSingleResult()
を使用する必要があります。
例
例4-79に、JPA問合せでこのヒントを使用する方法を示します。
例4-79 JPA問合せでのresult-collection-typeの使用
import org.eclipse.persistence.config.HintValues;
import org.eclipse.persistence.config.QueryHints;
query.setHint("eclipselink.RESULT_COLLECTION_TYPE", "<CLASS_NAME>");
例4-80に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-80 @QueryHint注釈でのresult-collection-typeの使用
import org.eclipse.persistence.config.HintValues;
import org.eclipse.persistence.config.QueryHints;
@QueryHint(name=QueryHints.RESULT_COLLECTION_TYPE, value="<CLASS_NAME>");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解のコレクション・マッピングに関する項
eclipselink.sql.hint
を使用して、問合せのSQLにSQLヒントを組み込みます。
値
表4-40は、この問合せヒントの値を説明しています。
使用方法
特定のデータベース・プラットフォームでSQLヒントを使用して、問合せでの索引の使用方法や、使用頻度の低いその他の使用方法を定義できます。SQLヒントは、SQL内のSELECT
/INSERT
/UPDATE
/DELETE
コマンドの後に組み込みます。
例
例4-81に、JPA問合せでこのヒントを使用する方法を示します。
例4-81 JPA問合せでのsql.hintの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; query.setHint("eclipselink.HINT", "/*+ index(scott.emp ix_emp) * /");
例4-82に、@QueryHint
注釈でこのヒントを使用する方法を示します。
例4-82 @QueryHint注釈でのsql.hintの使用
import org.eclipse.persistence.config.HintValues; import org.eclipse.persistence.config.QueryHints; @QueryHint(name=QueryHints.HINT, value="/*+ index(scott.emp ix_emp) * /");
関連項目
詳細は、次を参照してください。
EclipseLinkの理解の問合せヒントに関する項
EclipseLinkソリューション・ガイドの問合せに関する項
JPA仕様(http://jcp.org/en/jsr/detail?id=317
)の10.3.1項、NamedQuery注釈に関する項