ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス
12c (12.1.3)
E57544-01
  目次へ移動
目次

前
 
次
 

4 JPA問合せのカスタマイズ拡張機能

この章では、EcpliseLink問合せヒント(JPA問合せの拡張機能)の指定方法を説明します。次を使用して、EclipseLink問合せヒント(JPA問合せの拡張機能)を指定できます。

EclipseLinkでは、次のEclipseLink問合せヒントがサポートされています。

すべてのEclipseLink問合せヒントは、org.eclipse.persistence.config package内のQueryHintsクラスに定義されています。ヒントを設定する場合は、org.eclipse.persistence.configパッケージ内の適切な構成クラスでpublic static finalフィールドを使用して、次のような値を設定できます。

詳細は、次を参照してください。


batch

eclipselink.batchを使用してEclipseLinkにバッチ処理情報を提供すると、関連するオブジェクトに対する後続の問合せがバッチ内で最適化されるため、オブジェクトを1つずつ取得したり、大規模な1つの結合読取りで取得することを回避できます。

この問合せヒントでは、単一値のリレーションシップ・パス式を使用できます。

使用方法

eclipselink.batchヒントを使用すると、EclipseLinkで重複データの読取りが回避されるため、結合よりも効率的です。

SELECT句にオブジェクトが1つしかない問合せについてのみ、バッチ処理を実行できます

有効値は、単一値のリレーションシップ・パス式です。


注意:

ネストされた属性にアクセスするには、ドット表記法を使用します。たとえば、従業員のマネージャのアドレスについてバッチ読取りを実行するには、e.manager.addressを使用します。


例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");

関連項目

詳細は、次を参照してください。


batch.size

batch.typeINに設定されている場合、eclipselink.batch.sizeを使用して、バッチ・サイズを構成します。

表4-1は、この永続性プロパティの値を説明しています。

表4-1 batch.sizeの有効値

Value 説明

サイズ

IN句ごとのキー数

デフォルト: 256または問合せのpageSize (カーソル問合せの場合)


例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");

関連項目

詳細は、次を参照してください。


batch.type

eclipselink.batch.typeを使用して、バッチ・フェッチの対象となるすべてのリレーションシップについて問合せで使用するバッチ・フェッチのタイプを指定します。

表4-2は、この問合せヒントの値を説明しています。

表4-2 batch.typeの有効値

Value 説明

JOIN

(デフォルト)元の問合せの選択基準がバッチ問合せと結合されます。

EXISTS

結合のかわりに、SQL EXISTSおよび下位選択をバッチ問合せで使用します。

IN

SQL IN句をバッチ問合せで使用し、ソース・オブジェクトIDを渡します。


例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");

関連項目

詳細は、次を参照してください。


cache-usage

eclipselink.cache-usageを使用して、問合せとEclipseLinkキャッシュとの相互作用の方法を指定します。

表4-3は、この問合せヒントの有効値を説明しています。

表4-3 org.eclipse.persistence.config.CacheUsageの有効値

Value 説明

DoNotCheckCache

常にデータベースに移動します。

CheckCacheByExactPrimaryKey

読取り問合せに主キーのみを比較する式が含まれている場合、メモリー内のオブジェクトに対して式を処理すると、キャッシュ・ヒットを取得できます。

CheckCacheByPrimaryKey

読取り問合せに少なくとも主キーを比較する式が含まれている場合、メモリー内のオブジェクトに対して式を処理すると、キャッシュ・ヒットを取得できます。

CheckCacheThenDatabase

任意の読取り問合せを構成し、データベースにアクセスする前にキャッシュを完全にチェックできます。

CheckCacheOnly

任意のすべて読取り問合せを構成し、親セッション・キャッシュ(共有キャッシュ)のみをチェックして、データベースにアクセスせずにその問合せからの結果を返すことができます。

ConformResultsInUnitOfWork

任意の読取り問合せまたはすべて読取り問合せを作業ユニットのコンテキスト内で構成し、作業ユニット内でオブジェクトに加えられた変更に結果を一致させることができます。これには、新規オブジェクト、削除されたオブジェクト、および変更されたオブジェクトが含まれます。

UseEntityDefault

(デフォルト)このエンティティにEclipseLinkディスクリプタAPIで指定されたキャッシュ構成を使用します。

注意: エンティティのデフォルト値では、キャッシュはチェックされません(DoNotCheckCache)。この問合せは、データベースにアクセスしてキャッシュと同期化します。問合せにリフレッシュが設定されている場合を除き、キャッシュされたオブジェクトはデータベースからリフレッシュされずに返されます。EclipseLinkでは、ネイティブ問合せ、またはデータや複数オブジェクトを返すなどの複雑な結果セットを含む問合せに対するキャッシュの使用はサポートされていません。


使用方法

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);

関連項目

詳細は、次を参照してください。


cache-usage.indirection-policy

eclipselink.cache-usage.indirection-policyを(cache-usageとともに)使用して、インメモリー問合せおよびインスタンス化されていないインダイレクションや遅延リレーションシップに関する一致機能の処理を構成します。

表4-4は、この問合せヒントの値を説明しています。

表4-4 cache-usage.indirection-policyの有効値

Value 説明

Conform

一致機能でインスタンス化されていないインダイレクションや遅延オブジェクトが発生した場合、一致処理を行うことが想定されます。

Exception

(デフォルト)一致機能でインスタンス化されていないインダイレクションや遅延オブジェクトが発生した場合、例外がスローされます。

NotConform

一致機能でインスタンス化されていないインダイレクションや遅延オブジェクトが発生した場合、一致処理を行わないことが想定されます。

Trigger

一致機能でインスタンス化されていないインダイレクションや遅延オブジェクトが発生した場合、一致機能がトリガーされます。


使用方法

このヒントは、問合せにより、問合せリレーションシップ全体で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) 

関連項目

詳細は、次を参照してください。


cursor

eclipselink.cursorを使用して、CursoredStreamを返すように問合せを構成します。

表4-5は、この永続性プロパティの値を説明しています。

表4-5 cursorの有効値

Value 説明

true


false

(デフォルト)


使用方法

カーソルは、JDBC ResultSetのストリームです。カーソルは、結果セットが大きい場合や問合せのうち少数の結果のみが必要な場合に役立ちます。

next()を使用してJDBC ResultSetから次をフェッチする場合、カーソルでEnumerationを実装して、それによって生成されるオブジェクトや値を構築します。カーソルにはJDBCライブ接続が必要であるため、この接続は保持されます。カーソルのリソースを解放するには、close()を使用する必要があります。

カーソルにアクセスするには、JPA問合せからgetSingleResult()を使用するか、またはJpaQueryからgetResultCursor()を使用します。


ヒント:

結果のページを取得するには、カーソルのかわりにMAX_ROWSおよびFIRST_RESULTを使用できます。


例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");

関連項目

詳細は、次を参照してください。


composite-unit.member

ecliplselink.composite-unit.member問合せヒントを使用して、問合せの実行対象であるコンポジット・メンバー永続性ユニットの名前を指定します。コンポジット永続性ユニットで実行されるネイティブ問合せに対して使用する必要があります。

表4-6は、この永続性プロパティの値を説明しています。

表4-6 composite-unit.memberの有効値

Value 説明

value

コンポジット永続性ユニットの名前。


例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注釈でこのヒントを使用する方法を示します。

例4-14 @QueryHint注釈でのcomposite-unit.memberの使用

import org.eclipse.persistence.config.QueryHints;
@QueryHint(name=QueryHints.COMPOSITE_UNIT_MEMBER, 
value="mypersistentunit");

cursor.initial-size

eclipselink.cursor.initial-sizeを使用して、指定した初期サイズでCursoredStreamを返すように問合せを構成します。

表4-7は、この問合せヒントの値を説明しています。

表4-7 cursor.initial-sizeの有効値

Value 説明

int値に解析できるIntegerまたはStrings

next()がコールされる前にストリームに事前作成されたオブジェクトの初期数


例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");

関連項目

詳細は、次を参照してください。


cursor.page-size

eclipselink.cursor.page-sizeを使用して、指定したページ・サイズでCursoredStreamを返すように問合せを構成します。

表4-8は、この問合せヒントの値を説明しています。

表4-8 cursor.page-sizeの有効値

Value 説明

int値に解析できるIntegerまたはStrings

オブジェクトのバッファが空の場合に、next()コールでストリームからフェッチされるオブジェクトの数


例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");

関連項目

詳細は、次を参照してください。


exclusive-connection

eclipselink.exclusive-connectionを使用して、問合せで排他(トランザクション/書込み)接続を使用するかどうかを指定します。

表4-9は、この問合せヒントの値を説明しています。

表4-9 exclusive-connectionの有効値

Value 説明

true

問合せは排他接続によって実行されます。

false



使用方法

これは、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");

関連項目

詳細は、次を参照してください。


flush

eclipselink.flushを使用して、問合せの実行前に、問合せで永続性コンテキストをフラッシュするかどうかを指定します。

表4-10は、この問合せヒントの値を説明しています。

表4-10 flushの有効値

Value 説明

true

問合せの実行前に、永続性コンテキストのフラッシュがトリガーされます。

false

(デフォルト)


使用方法

永続性コンテキスト内で変更されたオブジェクトに問合せがアクセスする可能性がある場合、問合せで変更が認識されるようにフラッシュをトリガーする必要があります。問合せで変更を認識する必要がない場合は、パフォーマンスを向上させるためにフラッシュを回避する必要があります。

フラッシュ・モードを永続性ユニット・プロパティとして構成することもできます。詳細は、「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");

関連項目

詳細は、次を参照してください。


history.as-of

ある時点におけるオブジェクトの状態を問い合せるように、問合せを構成します。

表4-11は、この問合せヒントの値を説明しています。

表4-11 history.as-ofの有効値

Value 説明

タイムスタンプ

YYYY/MM/DD HH:MM:SS.nの形式のタイムスタンプ


使用方法

問合せの実行と結果はともに、データベース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");

関連項目

詳細は、次を参照してください。


history.as-of.scn

eclipselink.history.as-of.scnを使用して、データベースSCN (システム変更番号)時点でのオブジェクトの状態を問い合せるように問合せを構成します。

表4-12は、この問合せヒントの値を説明しています。

表4-12 history.as-of.scnの有効値

Value 説明

value

整数のSCN値


使用方法


注意:

この問合せヒントには、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");

関連項目

詳細は、次を参照してください。


inheritance.outer-join

eclipselink.inheritance.outer-joinを使用して、すべてのサブクラスにouter-joinを使用するように問合せを構成します。

表4-13は、この問合せヒントの値を説明しています。

表4-13 inheritance.outer-joinの有効値

Value 説明

true

outer-joinを使用します。

false

(デフォルト)outer-joinは使用せず、サブクラスごとに個別の問合せを実行します。


使用方法

この問合せヒントは、ルートまたはブランチの継承クラスについての問合せで使用できます。

DescriptorCustomizer (「descriptor.customizer」を参照)を使用して、この動作を構成することもできます。


注意:

これは、正しい順序付け、firstResultmaxResultおよびカーソルに必要です。


例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");

関連項目

詳細は、次を参照してください。


jdbc.bind-parameters

eclipselink.jdbc.bind-parametersを使用して、問合せでパラメータ・バインド(パラメータ化されたSQL)を使用するかどうかを指定します。

表4-14は、この問合せヒントの有効値を説明しています。

表4-14 org.eclipse.persistence.config.HintValuesの有効値

Value 説明

TRUE

すべてのパラメータがバインドされます。

FALSE

すべてのパラメータがバインドされるわけではありません。

PERSISTENCE_UNIT_DEFAULT

(デフォルト) 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");

関連項目

詳細は、次を参照してください。


jdbc.cache-statement

問合せによりそのJDBC文をキャッシュするかどうかを指定します。

表4-15は、この問合せヒントの値を説明しています。

表4-15 jdbc.cache-statementの有効値

Value 説明

true

問合せにより、そのJDBC文がキャッシュされます。

false

(デフォルト)


使用方法

これにより、問合せでパラメータ化されたSQLを文キャッシュとともに使用できます。また、文キャッシュが永続性ユニットについて有効になっている場合、特定の問合せでその文をキャッシュしないようにすることもできます。


ヒント:

通常、問合せごとではなく、永続性ユニット全体について文キャッシュを設定する必要があります(「jdbc.cache-statements」を参照)

DataSourceを使用している場合、DataSource構成に文キャッシュを設定する必要があります。


例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");

関連項目

詳細は、次を参照してください。


jdbc.fetch-size

追加行が必要な場合に、eclipselink.jdbc.fetch-sizeを使用して、データベースからフェッチする行数を指定します。


注意:

このプロパティにはJDBCドライバのサポートが必要です。


表4-16は、この問合せヒントの有効値を説明しています。

表4-16 eclipselink.jdbc.fetch-sizeの有効値

Value 説明

0からInteger.MAX_VALUEまで

(デフォルトは0) Stringの場合、JDBCドライバによって異なります。

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");

関連項目

詳細は、次を参照してください。


jdbc.first-result

eclipselink.jdbc.first-resultを使用して、問合せで結果内の指定された行数をスキップするかどうかを指定します。

表4-17は、この問合せヒントの値を説明しています。

表4-17 jdbc.first-resultの有効値

Value 説明

整数

int値に解析可能なInteger値またはString

取得する最初の結果の位置


使用方法

この問合せヒントは、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");

関連項目

詳細は、次を参照してください。


jdbc.max-rows

eclipselink.jdbc.max-rowsを使用して、返される最大行数を指定します。問合せにより、指定された数より多くの行が返された場合、後続行は返されません。

表4-18は、この問合せヒントの有効値を説明しています。

表4-18 eclipselink.jdbc.max-rowsの有効値

Value 説明

(Int値に解析可能な)IntまたはString

JDBCの最大行数を構成します。


使用方法

このヒントは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");

関連項目

詳細は、次を参照してください。


jdbc.native-connection

eclipselink.jdbc.native-connectionを使用して、問合せにネイティブJDBC接続が必要がどうかを指定します。

表4-19は、この永続性プロパティの値を説明しています。

表4-19 jdbc.native-connectionの有効値

Value 説明

true

ネイティブ接続が必要です。

false

(デフォルト)ネイティブ接続は不要です。


使用方法

これは、独自のプロキシに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");

関連項目

詳細は、次を参照してください。


jdbc.parameter-delimiter

eclipselink.jdbc.parameter-delimiterを使用して、(デフォルトのハッシュ文字#のかわりに)カスタム・パラメータのバインディング文字を指定します。

表4-20は、この問合せヒントの値を説明しています。

表4-20 jdbc.parameter-delimiterの有効値

Value 説明

文字

すべての有効な単一文字。""は使用しないでください。


例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=",");

関連項目

詳細は、次を参照してください。


jdbc.timeout

eclipselink.jdbc.timeoutを使用して、DatabaseExcpetionをスローする前に、EclipseLinkで問合せ結果を待機する(タイムアウトする)秒数を指定します。


注意:

このプロパティにはJDBCドライバのサポートが必要です。


表4-21は、この問合せヒントの有効値を説明しています。

表4-21 eclipselink.jdbc.timeoutの有効値

Value 説明

0からInteger.MAX_VALUEまで

(デフォルトは0) Stringの場合、JDBCドライバによって異なります。

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");

関連項目

詳細は、次を参照してください。


join-fetch

eclipselink.join-fetch hintを使用して、属性を問合せに結合します。


注意:

ネストされた属性にアクセスするには、ドット表記法を使用します。たとえば、従業員のマネージャのアドレスについてバッチ読取りを実行するには、e.manager.addressを使用します。


表4-22は、この問合せヒントの有効値を説明しています。

表4-22 eclipselink.join-fetchヒントの有効値

Value

リレーションシップ・パス式


使用方法

このヒントは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");

関連項目

詳細は、次を参照してください。


left-join-fetch

eclipselink.left-join-fetchを使用して問合せを最適化することにより、関連オブジェクトは個別に問合せが行われるのではなく、問合せに結合されます。

表4-23は、この問合せヒントの値を説明しています。

表4-23 left-join-fetchの有効値

Value 説明

文字列

リレーションシップへのJPQLスタイルのナビゲーション


使用方法

この問合せヒントを使用して、JPQLでサポートされていないネストされた結合フェッチを作成できます。また、eclipselink.left-join-fetchを使用して、ネイティブ問合せを含む結合フェッチを作成することもできます。


注意:

この問合せヒントでは、nullまたは空の値を使用できるOUTER結合を使用します。


例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");

関連項目


load-group

eclipselink.load-groupを使用して、ロード・グループ・オブジェクトを使用するように問合せを構成します。

表4-24は、この永続性プロパティの値を説明しています。

表4-24 load-groupの有効値

Value 説明

load-groupクラス名

LoadGroupのインスタンス。


使用方法

ロード・グループを使用すると、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");

関連項目

詳細は、次を参照してください。


load-group.attribute

eclipselink.load-group.attributeを使用して、問合せで属性のリストを含むload-groupを使用するかどうかを指定します。

使用方法

個別のヒントを使用して、各属性を定義する必要があります。問合せにより、ロード・グループに定義されたすべてのリレーショナル属性がロードされます。

LoadGroupsは、オブジェクトを返す問合せについてのみサポートされます(1つの別名のみをSELECT句にすることができます)。ローカル属性とネストされた属性の両方がサポートされます。

関連項目

詳細は、次を参照してください。


maintain-cache

eclipselink.maintain-cacheを使用して、問合せ結果をセッション・キャッシュでキャッシュするかどうかを制御します。

表4-25は、この問合せヒントの有効値を説明しています。

表4-25 org.eclipselink.maintain-cacheの有効値

Value 説明

TRUE

キャッシュは保持されます。

FALSE

(デフォルト)キャッシュは保持されません。


使用方法

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);

関連項目

詳細は、次を参照してください。


pessimistic-lock

eclipselink.pessimistic-lockを使用して、EclipseLinkでペシミスティック・ロックを使用するかどうかを指定します。

表4-26は、この問合せヒントの有効値を説明しています。

表4-26 org.eclipse.persistence.config.PessimisticLockの有効値

Value 説明

NoLock

(デフォルト)ペシミスティック・ロックは使用されません。

Lock

EclipseLinkにより、SELECT .... FOR UPDATE文が発行されます。

LockNoWait

EclipseLinkにより、SELECT .... FOR UPDATE NO WAIT文が発行されます。


使用方法

ペシミスティック・ロックを使用する主な利点は、ロックが取得されると、編集が正常に行われることが保証される点です。これは、オプティミスティック・ロックが原因で多数のオプティミスティック・ロック・エラーが発生する可能性がある高並列アプリケーションにおいて有用です。

ペシミスティック・ロックの短所の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);

関連項目

詳細は、次を参照してください。


prepare

eclipselink.prepareを使用して、問合せを実行するたびにそのSQLを準備(つまり生成)するかどうかを指定します。

表4-27は、この問合せヒントの値を説明しています。

表4-27 prepareの有効値

Value 説明

true

EclipseLinkで問合せが実行されるたびに、SQLが生成されます。

false

(デフォルト) EclipseLinkで問合せが最初に実行されたときにのみ、SQLが生成されます。


使用方法

デフォルトでは、EclipseLinkにより実行ごとにSQLが再生成されることはありません。このため、パフォーマンスが向上する場合があります。

動的SQLを必要とする問合せでは(nullパラメータを処理する場合など)、eclipselink.preparefalseに設定します。

例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");

関連項目

詳細は、次を参照してください。


query-results-cache

eclipselink.query-results-cacheを使用して、問合せで結果キャッシュを使用することを指定します。

表4-28は、この永続性プロパティの値を説明しています。

表4-28 query-results-cacheの有効値

Value 説明

Persistence_Unit_Default

(デフォルト)

True

問合せ結果がキャッシュされます。

False

問合せ結果はキャッシュされません。


使用方法

デフォルトでは、問合せにより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>

関連項目

詳細は、次を参照してください。


query-results-cache.expiry

eclipselink.query-results-cache.expiryを使用して、問合せの結果キャッシュの有効時間(つまり、有効期限)を設定します。

表4-29は、この問合せヒントの値を説明しています。

表4-29 query-results-cache.expiryの有効値

Value 説明

Value

int値に解析可能なIntegerまたはStringsとしてのミリ秒数


使用方法

デフォルトでは、問合せ結果キャッシュの結果は失効しません。

例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");

関連項目

詳細は、次を参照してください。


query-results-cache.expiry-time-of-day

eclipselink.query-results-cache.expiry-time-of-dayを使用して、問合せ結果キャッシュの有効期限の時刻を設定します。

表4-30は、この永続性プロパティの値を説明しています。

表4-30 query-results-cache.expiry-time-of-dayの有効値

Value 説明

Value

StringとしてのHH:MM:SS形式の時刻


使用方法

デフォルトでは、問合せ結果キャッシュの結果は失効しません。

例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");

関連項目

詳細は、次を参照してください。


query-results-cache.ignore-null

eclipselink.query-results-cache.ignore-nullを使用して、EclipseLinkがnullの問合せ結果をキャッシュするかどうかを指定します。

表4-31は、この問合せヒントの値を説明しています。

表4-31 query-results-cache.ignore-nullの有効値

Value 説明

true

nullの結果は無視されます(つまり、結果はキャッシュされません)。

false

(デフォルト) 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");

関連項目

詳細は、次を参照してください。


query-results-cache.randomize-expiry

eclipselink.query-results-cache.randomize-expiryを使用して、有効期間(query-results-cache.expiry)の設定値の10%をランダム化することを指定します。

表4-32は、この問合せヒントの値を説明しています。

表4-32 query-results-cache.randomize-expiryの有効値

Value 説明

true

有効期間の10%がランダム化されます。

false

(デフォルト)有効期間はランダム化されません。


使用方法

この問合せヒントを使用して、指定時刻に失効する複数のキャッシュ値によるボトルネックを回避します。

例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");

関連項目

詳細は、次を参照してください。


query-results-cache.size

eclipselink.query-results-cache.sizeを使用して、問合せの結果キャッシュの固定サイズを設定します。

表4-33は、この問合せヒントの値を説明しています。

表4-33 query-results-cache.sizeの有効値

Value 説明

サイズ

int値に解析可能なIntegerまたはStrings (デフォルト: 100)


使用方法

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");

関連項目

詳細は、次を参照してください。


query-results-cache.type

eclipselink.query-results-cache.typeを使用して、問合せの結果キャッシュに使用するキャッシュ・タイプを設定します。

表4-34は、この問合せヒントの値を説明しています。

表4-34 query-results-cache.typeの有効値

Value 説明

Cache

(デフォルト)固定サイズのLRUキャッシュ(CacheIdentityMap)

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");

関連項目

詳細は、次を参照してください。


query-type

eclipselink.query-typeを使用して、問合せに使用するEclipseLink問合せタイプを指定します。

表4-35は、この問合せヒントの有効値を説明しています。

表4-35 org.eclipse.persistence.config.QueryTypeの有効値

Value 説明

Auto

(デフォルトは0) EclipseLinkにより問合せタイプが選択されます。

ReadAll

ReadAllQueryが使用されます。

ReadObject

ReadObjectQueryが使用されます。

Report

ReportQueryが使用されます。


使用方法

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);

関連項目

詳細は、次を参照してください。


read-only

eclipselink.read-onlyを使用して、問合せから読取り専用結果を取得します。

表4-36は、この問合せヒントの有効値を説明しています。

表4-36 read-onlyの有効値

Value 説明

TRUE

読取り専用結果が問合せから取得されます。

FALSE

(デフォルト)読取り専用結果は問合せから取得されません。


使用方法

非トランザクションの読取り操作では、要求されたエンティティ・タイプが共有キャッシュに格納される場合、デタッチされたコピーではなく、共有インスタンスが返されるように要求できます。


注意:

共有キャッシュから返されるオブジェクトを変更しないでください。


例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);

関連項目

詳細は、次を参照してください。


refresh

eclipselink.refreshを使用して、問合せにより返されたオブジェクトでEclipseLinkのセッション・キャッシュを更新するかどうかを指定します。

表4-37は、この問合せヒントの有効値を説明しています。

表4-37 eclipselink.refreshの有効値

Value 説明

TRUE

キャッシュがリフレッシュされます。

FALSE

(デフォルト)キャッシュはリフレッシュされません。FALSEのかわりに""を使用できます。


使用方法

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);

関連項目

詳細は、次を参照してください。


refresh.cascade

eclipselink.refresh.cascadeを使用して、リフレッシュ問合せにより、リフレッシュをリレーションシップにカスケードするかどうかを指定します。

表4-38は、この問合せヒントの有効値を説明しています。

表4-38 eclipselink.refresh.cascadeの有効値

Value 説明

CascadeAllParts

すべての関連付けにカスケードされます。

CascadeByMapping

メタデータをマッピングすることにより、カスケードされます。

CascadePrivateParts

私有のリレーションシップにカスケードされます。

NoCascade

カスケードされません。


使用方法

リフレッシュを実行するには、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);

関連項目

詳細は、次を参照してください。


result-collection-type

eclipselink.result-collection-typeを使用して、問合せ結果にコレクション・クラス実装を構成します。

表4-39は、この問合せヒントの値を説明しています。

表4-39 result-collection-typeの有効値

Value 説明

true

.classを含まない、コレクション型を表す完全修飾クラス名。

false

(デフォルト) nullの結果は無視されません(つまり、結果はキャッシュされます)。


使用方法

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>");

関連項目

詳細は、次を参照してください。


sql.hint

eclipselink.sql.hintを使用して、問合せのSQLにSQLヒントを組み込みます。

表4-40は、この問合せヒントの値を説明しています。

表4-40 sql.hintの有効値

Value 説明

value

コメントやデリミタを含む完全なヒント文字列


使用方法

特定のデータベース・プラットフォームで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) * /");

関連項目

詳細は、次を参照してください。