ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLinkソリューション・ガイド
11g リリース1 (11.1.1)
B66616-01
  目次へ移動
目次

前
 
次
 

8 コンテナ外部のTopLink JPAのテスト

TopLinkでは、永続性ユニットのJARを使用して、コンテナの外のアプリケーション(たとえば、Java Platform, Standard Edition (Java SE)のアプリケーション)をテストできます。

この章では、次の項目について説明します。

8.1 JPAデプロイメントの理解

コンテナの外部にデプロイする場合は、javax.persistence.PersistenceクラスのcreateEntityManagerFactoryメソッドを使用して、エンティティ・マネージャ・ファクトリを作成します。このメソッドは、プロパティのMapおよび永続性ユニットの名前を受け入れます。このメソッドに渡すプロパティは、persistence.xmlファイル指定されているプロパティと組み合されます。追加のプロパティの場合もあれば、persistence.xmlファイルに以前に指定したプロパティの値を上書きする場合もあります。


ヒント:

これは、コマンドラインなどのプログラム入力から取得したプロパティを設定するのに便利な方法です。


8.1.1 EntityManagerの使用

EntityManagerは、エンティティBeanを永続化したり、データベースからロードしたりするためのアクセス・ポイントです。通常は、JPAコンテナで、データ・ソースとのやりとりを管理します。ただし、JPA永続性ユニットに対してJTAデータ・ソースを使用している場合は、Java EEコンテナのデータ・ソースからJDBC接続にアクセスできます。管理対象のデータ・ソースを使用できないので、persistence.xmlファイルに接続情報を含める必要があります。

Oracle TopLinkでは、EntityManagerに対するEclipseLinkの拡張機能にもアクセスできます。

8.2 persistence.xmlファイルの構成

persistence.xmlファイルは、Java Persistence API (JPA)を使用した永続性のデプロイメント・ディスクリプタ・ファイルです。ここには、永続性ユニットを指定し、管理対象永続性クラス、オブジェクト/リレーション・マッピング、およびデータベース接続の詳細を宣言します。

8.2.1 主なタスク

この項には、次の項目が含まれます。

8.2.1.1 タスク1: persistence.xmlファイルの使用

例8-1に、JavaSE構成(つまり、コンテナの外部)用のpersistence.xmlファイルを示します。

例8-1 JavaSE構成を指定するpersistence.xmlファイル

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">
    <persistence-unit name="my-app" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
            <property name="javax.persistence.jdbc.user" value="scott"/>
            <property name="javax.persistence.jdbc.password" value="tiger"/>
        </properties>
    </persistence-unit>
</persistence>

8.2.1.2 タスク2: EntityManagerFactoryのインスタンス化

EntityManagerFactoryを使用すれば、データベースのEntityManagerインスタンスを効率的に作成できます。次の方法を使用して、(例8-1に示す)アプリケーションのEntityManagerFactoryをインスタンス化できます。

Persistence.createEntityManagerFactory("my-app");

8.3 プロパティ・マップの使用

プロパティ・マップを使用して、デフォルトの永続性プロパティをオーバーライドできます。

8.3.1 主なタスク

この項の手順は次のとおりです。

8.3.1.1 タスク1: persistence.xmlファイルの構成

例8-2に、コンテナ・デプロイメントを使用するpersistence.xmlファイルを示します。

例8-2 JavaSE構成を指定するpersistence.xmlファイル

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd" version="1.0">
    <persistence-unit name="employee" transaction-type="RESOURCE_LOCAL">
        <non-jta-data-source>jdbc/MyDS</non-jta-data-source>
    </persistence-unit>
</persistence>

注意:

コンテナの外でテストする際に、データ・ソースは使用できません。


8.3.1.2 タスク2: ブートストラップAPIの構成

例8-2に示されている永続性ユニットをコンテナの外でテストするには、JavaSEのブートストラップAPIを使用する必要があります。例8-3に、このブートストラップを示すサンプル・コードを示します。

例8-3 サンプル構成

import static org.eclipse.persistence.config.PersistenceUnitProperties.*;

...

  Map properties = new HashMap();

  // Ensure RESOURCE_LOCAL transactions is used.
  properties.put(TRANSACTION_TYPE,
    PersistenceUnitTransactionType.RESOURCE_LOCAL.name());

  // Configure the internal connection pool
  properties.put(JDBC_DRIVER, "oracle.jdbc.OracleDriver");
  properties.put(JDBC_URL, "jdbc:oracle:thin:@localhost:1521:ORCL");
  properties.put(JDBC_USER, "scott");
  properties.put(JDBC_PASSWORD, "tiger");

  // Configure logging. FINE ensures all SQL is shown
  properties.put(LOGGING_LEVEL, "FINE");
  properties.put(LOGGING_TIMESTAMP, "false");
  properties.put(LOGGING_THREAD, "false");
  properties.put(LOGGING_SESSION, "false");

  // Ensure that no server-platform is configured
  properties.put(TARGET_SERVER, TargetServer.None);

8.3.1.3 タスク3: EntityManagerFactoryのインスタンス化

EntityManagerFactoryを使用すれば、データベースのEntityManagerインスタンスを効率的に作成できます。次の方法を使用して、(例8-3に示す)アプリケーションのEntityManagerFactoryをインスタンス化できます。

Persistence.
createEntityManagerFactory("unitName", "Properties");

8.4 その他の参考資料

JPAデプロイメントの詳細は、JPA仕様の次の項(http://jcp.org/en/jsr/detail?id=317)を参照してください。

8.4.1 Javadoc

詳細は、『Oracle Fusion Middleware Java API Reference for EclipseLink』の次のAPIを参照してください。

  • PersistenceUnitPropertiesクラス

  • EntityManagerFactoryインタフェース

  • JpaEntityManagerインタフェース