この章の内容は次のとおりです。
EclipseLink Native Object Relational Mapping (ORM)は、広範なオブジェクト・リレーショナル・マッピング・フレームワークを提供します。XMLを使用して宣言により構成される様々な機能とともに、高パフォーマンスのオブジェクト永続化を提供します。これらの様々な機能には、キャッシング(クラスタリングされたキャッシングを含む)、高度なデータベース固有機能、およびパフォーマンス・チューニングと管理のオプションが含まれます。
グリッド基盤のJPA構成と同様に、EclipseLink ORMを採用するアプリケーションはCoherenceキャッシュにアクセスできます。ただし、グリッド基盤のJPA構成とは異なり、EclipseLink ORMアプリケーションはキャッシュの使用方法を構成するために@Customizer
注釈を使用しません。かわりに、通常は適切なキャッシュ動作を定義する修正メソッドを呼び出します。
EclipseLink Native ORMで使用されるキャッシュ・ストアおよびキャッシュ・ローダーAPIは、toplink-grid.jar
ファイルに含まれています。表3-1で、EclipseLink Native ORM.のAPIについて説明します。これらのクラスはoracle.eclipselink.coherence.integrated
パッケージにあります。
表3-1 Native ORM構成用のEclipseLinkクラス
署名の2つ目の初期化パラメータsessionName
は、EclipseLink構成ファイルMETA-INF/sessions.xml
にリストされている必要のあるマッピング・プロジェクトの名前を表します。
EclipseLinkNativeCacheStore
クラスとEclipseLinkNativeCacheLoader
クラスでは、EclipseLink Native ORMを使用するアプリケーションがCoherenceキャッシュにアクセスできます。これらのクラスは、Coherenceキャッシュの動作が修正メソッドで構成されている場合に使用します。これらのクラスを使用して、第2章「グリッド基盤のJPA構成」で説明されているのと同じ方法で各永続クラスのキャッシュ・ストアまたはキャッシュ・ローダーを構成できます。
Coherenceキャッシュ構成ファイルcoherence-cache-config.xml
を使用して、キャッシュ・ストア・キャッシュ・スキームを定義し、デフォルトのCoherence設定をオーバーライドします。
構成では、ネイティブEclipseLink sessions.xml
ファイルとproject.xml
ファイルを使用します。sessions.xml
ファイル、およびそこにリストされているすべてのデプロイメントXMLファイル(ユーザー定義の名前を持ちます)は、クラスパスで使用可能になっているか、META-INF
ディレクトリ内のJARファイルにパッケージ化されている必要があります。
適切なキャッシュ動作を定義するには、修正メソッドも構成する必要があります。詳細は、「修正メソッドの構成」を参照してください。
修正メソッドとは、EclipseLink記述子APIを使用してクラスに対するORMマッピング・メタデータをカスタマイズするメソッドです。メソッドは実行時に記述子がロードされる際にコールされます。TopLink Gridで提供される修正メソッドの目的は、Coherenceキャッシュの使用方法を定義することです。修正メソッドは、TopLink Native ORMで@Customizer
注釈にかわるものです。どちらの場合も同じ構成が生成されます。
toplink-grid.jar
にあるTopLink Gridのカスタマイザ・クラス(CoherenceReadCustomizer
、CoherenceReadWriteCustomizer
、およびGridCacheCustomizer
)は、適切なCoherenceキャッシュ動作を有効にするために選択できるafterLoad
修正メソッドを提供します。
JDeveloperまたはEclipseLink Workbenchを使用して修正メソッドを選択できます。EclipseLink Workbenchでの修正メソッドの構成方法については、このドキュメントでは説明しません。このトピックの詳細は、Eclipsepediaの修正メソッドとロード後のメソッドに関する項を参照してください。
http://wiki.eclipse.org/Introduction_to_Descriptors_(ELUG)#Amendment_and_After-Load_Methods
目的のTopLink記述子要素を右クリックします。「アドバンスト・プロパティ」を選択して「アドバンスト・プロパティ」ダイアログ・ボックスを開きます。「ロード後」チェック・ボックスを選択し、「OK」をクリックします。
tlMap構成ウィンドウの「ロード後」タブで、選択したTopLink記述子に使用するafterLoad
修正メソッドを含むクラスの名前を入力します。クラス・ブラウザを使用してクラスを検索することもできます。図3-3に、tlMap構成ウィンドウの「ロード後」タブを示します。
図3-4に、CoherenceReadCustomizer
クラスが選択されているクラス・ブラウザを示します。
tlMap構成ウィンドウの「ロード後」タブで、「Staticメソッド」ドロップダウン・リストから修正メソッドを選択します。Coherence Customizerクラスの場合、これはafterLoad
メソッドになります。
coherence-cache-config.xml
ファイルでは、キャッシュ・ローダーまたはキャッシュ・ストア・クラスを指定し、キャッシュ名とセッション名(つまりプロジェクト名)のパラメータを提供する必要があります。次の例は、クラス名(EclipseLinkNativeCacheStore
またはEclipseLinkNativeCacheLoader
)の変更以外に、キャッシュ・ローダーまたはキャッシュ・ストアを使用しているかどうかに応じてCoherenceキャッシュ構成に対して変更を行わないことを示しています。
例3-1は、EclipseLink Native ORMアプリケーションと通信できるキャッシュのcoherence-cache-config.xml
ファイル内の構成を示しています。class-name
要素は、EclipseLinkNativeCacheStore
クラスをキャッシュ・ストア・スキームとして識別します。param-value
要素は、クラスに渡されるキャッシュ名とセッション(プロジェクト)名を指定します。
例3-1 統合EclipseLinkNativeCacheStoreの構成
... <distributed-scheme> <scheme-name>eclipselink-native-distributed-store</scheme-name> <service-name>EclipseLinkNative</service-name> <serializer> <class-name>oracle.eclipselink.coherence.integrated.cache.WrapperSerializer</class-name> </serializer> <backing-map-scheme> <read-write-backing-map-scheme> <internal-cache-scheme> <local-scheme/> </internal-cache-scheme> <!-- Define the cache scheme --> <cachestore-scheme> <class-scheme><class-name>oracle.eclipselink.coherence.integrated.EclipseLinkNativeCacheStore</class-name>
<init-params> <init-param> <param-type>java.lang.String</param-type><param-value>{cache-name}</param-value>
</init-param> <init-param> <param-type>java.lang.String</param-type><param-value>coherence-native-project</param-value>
</init-param> </init-params> </class-scheme> </cachestore-scheme> </read-write-backing-map-scheme> </backing-map-scheme> <autostart>true</autostart> </distributed-scheme> ...
例3-2は、coherence-cache-config.xml
ファイル内の統合EclipseLinkNativeCacheLoader
インスタンス構成を示しています。キャッシュ名({cache-name}
)およびセッション名(coherence-native-project
)パラメータ値がクラスに渡されます。
例3-2 統合EclipseLinkNativeCacheLoaderの構成
... <cachestore-scheme> <class-scheme><class-name>oracle.eclipselink.coherence.integrated.EclipseLinkNativeCacheLoader</class-name>
<init-params> <init-param> <param-type>java.lang.String</param-type> <param-value>{cache-name}
</param-value> </init-param> <init-param> <param-type>java.lang.String</param-type> <param-value>coherence-native-project
</param-value> </init-param> </init-params> </class-scheme> </cachestore-scheme> ...