ヘッダーをスキップ
Oracle® Coherence Oracle ToplinkおよびCoherence Grid統合ガイド
リリース3.7.1
B71691-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

3 EclipseLink Native ORMの構成

この章の内容は次のとおりです。

3.1 EclipseLink Native ORMについて

EclipseLink Native Object Relational Mapping (ORM)は、広範なオブジェクト・リレーショナル・マッピング・フレームワークを提供します。XMLを使用して宣言により構成される様々な機能とともに、高パフォーマンスのオブジェクト永続化を提供します。これらの様々な機能には、キャッシング(クラスタリングされたキャッシングを含む)、高度なデータベース固有機能、およびパフォーマンス・チューニングと管理のオプションが含まれます。

グリッド基盤JPA構成と同様に、EclipseLink ORMを採用するアプリケーションはCoherenceキャッシュにアクセスできます。ただし、グリッド基盤JPA構成とは異なり、EclipseLink ORMアプリケーションはキャッシュの使用方法を構成するために@Customizer注釈を使用しません。かわりに、通常は適切なキャッシュ動作を定義する修正メソッドを呼び出します。

3.2 EclipseLink Native ORMのAPI

EclipseLink Native ORMで使用されるキャッシュ・ストアおよびキャッシュ・ローダーAPIは、toplink-grid.jarファイルに含まれています。表3-1で、EclipseLink Native ORM.のAPIについて説明します。これらのクラスはoracle.eclipselink.coherence.integratedパッケージにあります。

表3-1 Native ORM構成用のEclipseLinkクラス

クラス名 説明

EclipseLinkNativeCacheStore(String cacheName, String sessionName)

ネイティブEclipseLink構成で使用する必要のあるCoherenceキャッシュ・ストア(sessions.xml)。

EclipseLinkNativeCacheLoader(String cacheName, String sessionName)

ネイティブEclipseLink構成で使用する必要のあるCoherenceキャッシュ・ローダー(sessions.xml)。

oracle.eclipselink.coherence.integrated.config.CoherenceReadCustomizer

Coherence読取り構成を有効にします。

oracle.eclipselink.coherence.integrated.config.CoherenceReadWriteCustomizer

Coherence読取り/書込み構成を有効にします。

oracle.eclipselink.coherence.integrated.config.GridCacheCustomizer

エンティティ・インスタンスを内部EclipseLink共有キャッシュのかわりにCoherenceにキャッシュできるようにします。


署名の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ファイルにパッケージ化されている必要があります。

適切なキャッシュ動作を定義するには、修正メソッドも構成する必要があります。詳細は、「修正メソッドの構成」を参照してください。

3.3 修正メソッドの構成

修正メソッドとは、EclipseLink記述子APIを使用してクラスに対するORMマッピング・メタデータをカスタマイズするメソッドです。メソッドは実行時に記述子がロードされる際にコールされます。TopLink Gridで提供される修正メソッドの目的は、Coherenceキャッシュの使用方法を定義することです。修正メソッドは、TopLink Native ORMで@Customizer注釈にかわるものです。どちらの場合も同じ構成が生成されます。

toplink-grid.jarにあるTopLink Gridのカスタマイザ・クラス(CoherenceReadCustomizerCoherenceReadWriteCustomizer、およびGridCacheCustomizer)は、適切なCoherenceキャッシュ動作を有効にするために選択できるafterLoad修正メソッドを提供します。

JDeveloperまたはEclipseLink Workbenchを使用して修正メソッドを選択できます。EclipseLink Workbenchでの修正メソッドの構成方法については、このドキュメントでは説明しません。このトピックの詳細は、Eclipsepedia修正メソッドとロード後のメソッドに関する項を参照してください。

http://wiki.eclipse.org/Introduction_to_Descriptors_(ELUG)#Amendment_and_After-Load_Methods

3.3.1 JDeveloperでの修正メソッドの構成

修正メソッドを構成するには、次の手順に従います。

  1. JDeveloperの「構造」ペインで、目的のtlMap記述子名を展開します。

    図3-1 JDeveloperの「構造」ペインのtlMap記述子

    JDeveloperの「構造」ペインのtlMap記述子
    「図3-1 JDeveloperの「構造」ペインのtlMap記述子」の説明

  2. 目的のTopLink記述子要素を右クリックします。「アドバンスト・プロパティ」を選択して「アドバンスト・プロパティ」ダイアログ・ボックスを開きます。「ロード後」チェック・ボックスを選択し、「OK」をクリックします。

    図3-2 「アドバンスト・プロパティ」ダイアログ・ボックス

    「アドバンスト・プロパティ」ダイアログ ボックスでの「ロード後」の選択
    「図3-2 「アドバンスト・プロパティ」ダイアログ ボックス」の説明

  3. tlMap構成ウィンドウの「ロード後」タブで、選択したTopLink記述子に使用するafterLoad修正メソッドを含むクラスの名前を入力します。クラス・ブラウザを使用してクラスを検索することもできます。図3-3に、tlMap構成ウィンドウの「ロード後」タブを示します。

    図3-3 TopLink記述子の「ロード後」タブ

    TopLink記述子の「ロード後」タブ
    「図3-3 TopLink記述子の「ロード後」タブ」の説明

    図3-4に、CoherenceReadCustomizerクラスが選択されているクラス・ブラウザを示します。

    図3-4 修正メソッドを含むクラスの検索

    修正メソッドを含むクラスの検索
    「図3-4 修正メソッドを含むクラスの検索」の説明

  4. tlMap構成ウィンドウの「ロード後」タブで、「Staticメソッド」ドロップダウン・リストから修正メソッドを選択します。Coherence Customizerクラスの場合、これはafterLoadメソッドになります。

    図3-5 修正メソッドの選択

    修正メソッドの選択
    「図3-5 修正メソッドの選択」の説明

3.4 EclipseLink Native ORMキャッシュ・ストアおよびキャッシュ・ローダーの構成

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>
...