詳細アイコン JPA永続性

Java Enterprise Edition 5(Java EE 5)Enterprise Java Beans(EJB)3.0仕様の一部であるJava永続性API(JPA)では、Javaの永続性が大幅に簡略化されています。このAPIには、オブジェクト・リレーショナル・マッピング・アプローチが用意されています。このアプローチを使用すると、Java EE 5アプリケーション・サーバーの内部とJava Standard Edition (Java SE)5アプリケーションのEJBコンテナの外部で動作する標準的で移植可能な方法で、Javaオブジェクトをリレーショナル・データベース表にマッピングする方法を宣言的に定義できます。

JPAエンティティ・アプリケーションは、永続性アーカイブにパッケージ化できます。このアーカイブは、JPA永続性ディスクリプタ・ファイルpersistence.xmlの設定が必要なJARファイルです。このpersistence.xmlファイルでは、1つ以上の永続性ユニットが構成されます。各永続性ユニットには名前を指定する必要があります。名前付きの永続性ユニットには、便利な方法が用意されており、この方法によって、一連のメタデータ・ファイル、クラス、および1つのグループで永続性を持続するすべてのクラスが含まれたJarを指定します。

「エンティティ作成(表ベース)」ウィザードを使用してJPAエンティティを作成すると、デフォルトの永続性ユニットが自動的に作成されます。アプリケーション・ナビゲータで、「アプリケーション・ソース」を開き、次に「META-INF」を開きます。「persistence.xml」をダブルクリックして概要エディタでファイルを開きます。必要に応じて、「概要」をクリックし、概要エディタに切り替えます。新規永続性ユニットを作成したり、persistence.xmlファイルにある既存の永続性ユニットを削除または編集する場合は、JPA永続性用の概要エディタを使用します。

persistence.xmlファイルの概要エディタ

persistence.xmlファイル内には、JDeveloperによって生成された永続性ユニットのデフォルト名の「Project1」があります。永続性ユニットのデフォルト名は、プロジェクト名から導出されることに注意してください。

デフォルトの永続性ユニットは、Java EEコンテナ内で実行するように構成されているため、その目的を識別する名前を使用できます。永続性ユニットの名前を変更するには、概要エディタで「永続性ユニット」の下の「Project1」を選択し、編集アイコン をクリックします。「永続性ユニットの名前の変更」ダイアログで、新規の名前を入力します。

永続性ユニットの名前の変更

Java EEコンテナ内で実行するように構成されている永続性ユニットは、ウィザードの使用時に選択したデータベース接続と一致するJTAデータ・ソースを指している必要があります。

persistence.xmlのエディタ・ウィンドウで、「ソース」をクリックし、XMLソース・エディタに切り替えます。

persistence.xmlファイル内には、1つ以上の<persistence-unit>エントリが定義されています。各<persistence-unit>は、.jarファイル内のエンティティのサブセット(おそらくすべて)を識別し、メタデータをこのエンティティ・グループに関連付けます。

Project1 <persistence-unit>のコードは、次のように表示されます。

<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"...>
  <persistence-unit name="Project1">
    <provider>
      org.eclipse.persistence.jpa.PersistenceProvider
    </provider>
    <jta-data-source>
      java:/app/jdbc/jdbc/FODDS
    </jta-data-source>
    <class>
      project1.ProductsBase
    </class>
    <properties>
      <property name="eclipselink.target-server" value="WebLogic_10"/>
      <property name="javax.persistence.jtaDataSource"
                value="java:/app/jdbc/jdbc/FODDS"/>
    </properties>
  </persistence-unit>
</persistence>

この例では、デフォルトの「Project1」永続性ユニットを使用しません。かわりに、Java EEコンテナ外部で実行するように構成された新規の永続性ユニットを作成します。これは、次のキュー・カードで実行します。