この章では、デプロイ済のアプリケーションで動的にマッピングをオーバーライドしたり拡張するために、実行中のアプリケーションに対して外部のメタデータ・ソースにマッピング情報をストアする手順について説明します。
この章の内容は次のとおりです。
ユース・ケース
アプリケーションが複数のクライアントにより共有されるSaaS環境をユーザーが構築したいと考えています。
解決方法
拡張性、マルチテナント、外部メタデータ・ソースなど、TopLinkのSaaS機能を採用します。
コンポーネント
TopLink 12cリリース1 (12.1.2)以上。
注意: TopLinkのコア機能は、オープン・ソースのEclipse Foundationの永続性フレームワークであるEclipseLinkによって提供されています。EclipseLinkでは、Java Persistence API (JPA)、Java Architecture for XML Binding (JAXB)、および標準に基づいたその他の永続性テクノロジと、それらの標準の拡張が実装されます。TopLinkには、EclipseLinkのすべてに加え、Oracleの追加機能が含まれています。 |
実行中のアプリケーションの外部にあるメタデータ・ソースにマッピング情報をストアできます。マッピング情報は、アプリケーションが永続性ユニットを作成するときに取得されるので、デプロイされたアプリケーションで動的にマッピングのオーバーライドまたは拡張を行えます。
EclipseLinkでは、eclipselink-orm.xml
ファイルを使用し、高度なマッピングのタイプおよびオプションをサポートできます。このファイルで、標準のJPA orm.xml
マッピング構成ファイルをオーバーライドできます。
外部のメタデータ・ソースをマッピング情報に使用するには、次のタスクを実行します。
永続性ユニットで、eclipselink.metadata.source
プロパティを定義して外部のメタデータ・ソースを指定し、その値にorg.eclipse.persistence.jpa.metadata.MetadataSource
を実装するクラスを割り当てます。次に例を示します。
<property name="eclipselink.metadata-source" value="mypackage.MyMetadataSource"/>
たとえば次などのように、クラスでメタデータに任意の場所を自由に用意できます。
public class AdminMetadataSource extends XMLMetadataSource { @Override public XMLEntityMappings getEntityMappings(Map<String, Object> properties, ClassLoader classLoader, SessionLog log) { String leagueId = (String) properties.get(LEAGUE_CONTEXT); properties.put(PersistenceUnitProperties.METADATA_SOURCE_XML_URL, "http://myserverlocation/rest/" + leagueId + "/orm"); return super.getEntityMappings(properties, classLoader, log); } }
メタデータ・ファイルにアクセスするには、次のいずれかの方法を使用して、サーバーでマッピング・ファイルへURLでアクセスできる必要があります。
静的なファイル提供サービス
独自のマッピング・ファイルを使用するサーバーベースのソリューションまたは、ストアされたマッピング情報を使用するオンデマンドで作成されるマッピング・ファイル
その他のWebテクノロジ
この章のソリューションを実装するその他のテクノロジおよびツールの詳細は、次の参考資料を参照してください。
JPAデプロイメントの詳細は、JPA仕様の次の項(http://jcp.org/en/jsr/detail?id=317
)を参照してください。
7.2項「Bootstrapping in Java SE Environments」
第7章「Container and Provider Contracts for Deployment and Bootstrapping」
永続性ユニットのプロパティの詳細は、『Oracle Fusion Middleware EclipseLink Java APIリファレンス』のPersistenceUnitProperties
クラスに関する項を参照してください。
APIの詳細は、『Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス』で次を参照してください。
metadata-source
metadata-source.properties.file
metadata-source.send-refresh-command
metadata-source.xml.file
metadata-source.xml.url