UML から JPA への変換

UML から JPA への変換により、統一モデリング言語 (UML) モデル要素から Java™ Persistence API (JPA) エンティティーおよび Java コードが生成されます。 UML から JPA への変換プロファイルのステレオタイプを UML モデル要素に適用し、 エンタープライズ Bean を生成する必要があります。
この変換を使用して JPA エンティティーおよび Java クラスを生成する前に、特定のコンポーネントをインストールして特定の機能を使用可能にする必要があります。 変換を実行した後、変換出力をカスタマイズするために、次の機能を使用可能にする必要があります。

他の変換による Java 成果物の生成

UML から JPA への変換構成を適用すると、変換サービスは、次の順序で以下の変換を呼び出します。
  1. UML から Java への変換
  2. UML から JPA への変換
  3. UML から EJB 3.0 への変換
これらの各変換で、変換規則により、 できる限り多くのソース要素が変換されます。 UML から JPA への変換プロファイルのステレオタイプを UML モデル要素に適用しない場合は、UML から Java への変換および UML から EJB 3.0 への変換では、UML モデル要素を Java コードおよび エンタープライズ JavaBeans™ (EJB) 3.0 の成果物に変換し、JPA エンティティーは生成されません。

欠落しているステレオタイプについての情報を「問題」ビューで確認してください。

有効な変換ソース

UML から JPA への変換のソースとして、次の要素を指定できます。

  • UML モデル
  • パッケージと、そのパッケージのコンテンツ
  • ネストなしのクラスと、そのクラスのコンテンツ
  • ネストなしのインターフェースと、そのインターフェースのコンテンツ
  • ネストなしの列挙

この変換では、UML モデル、パッケージ、クラス、およびインターフェースのコンテンツを変換します。 例えば、この変換によってクラスが変換された場合、 そのクラスの操作とプロパティーも変換されます。

変換構成エディターを使用しないで、「プロジェクト・エクスプローラー」ビューでモデルまたはモデル要素を選択した場合は、その選択したモデルまたは要素により、変換構成で指定されたソース・モデルまたは要素がオーバーライドされます。 変換構成は影響を受けず、変換構成エディターまたは「新規変換構成」ウィザードの「ソースとターゲット」ページで指定したソースも変更されません。

有効な変換ターゲット

変換により、JPA プロジェクトまたは Java プロジェクトへの出力、あるいは JPA プロジェクトまたは Java プロジェクトのソース・フォルダーを生成できます。JPA プロジェクトは、クライアント・プロジェクト付きでもなしでも作成できます。この変換は、JPA プロジェクトの最初の検出されたソース・フォルダー内と、クライアント・プロジェクトの最初に検出されたソース・フォルダーがあればそこにもコードを生成します。

デプロイメント記述子およびパーシスタンス・ファイル

変換を構成して、デプロイメント記述子を生成することができます。これは、以下のパーシスタンス・ファイルで構成されています。
  • orm.xml。これには、変換ソース内の UML 要素に対応する JPA 注釈が含まれています。
  • persistence.xml。これには、orm.xml を参照する <mapping-file> 要素が含まれています。

変換を構成してデプロイメント記述子を生成する場合、パーシスタンス・ファイルにすべての JPA 注釈が生成されますが、Java コードには JPA 注釈が生成されません。

ソース・モデル要素と変換出力の間のトレース関係

UML から JPA への変換を使用して、生成された Java クラスから UML ソース要素へのトレース関係を作成できます。その後、モデル照会を作成および実行して、トピック図内にそのトレース関係を表示することができます。

トレース関係の作成は、複数のモデルおよび複数の変換構成を持つような大規模なプロジェクトの場合に便利です。 また、変換出力がソフトウェアの仕様やモデル要素とどのように関係しているかを表示する、追跡可能性照会を作成および実行することもできます。

トレース関係を作成するように構成された変換を実行すると、@generated タグをサポートする各要素について、@generated タグに固有 ID が追加されます。 ソース UML モデル内の要素の名前を変更すると、この固有 ID によりマージ機能で適切な要素のリファクタリングとマージが可能になります。
注: UML 要素をそのトップレベルのクラスの範囲外に移動すると、要素の範囲が変更されるため、変換を再実行したときに、マージ・アルゴリズムでは名前変更された要素がリファクタリングまたはマージされません。

変換を再実行すると、必要に応じて、ソース・コード内の ID を 使用して、対応する要素がマッチングされ、モデルに対する変更内容を反映するためにコードが変更されます。例えば、ソース・モデル内の UML 操作の名前を変更して変換を再実行すると、変換により前に生成された Java メソッドが削除されて新規メソッドが追加されるのではなく、前に生成されたメソッドの名前が変更され、メソッドの本文が保持されます。

JPA から UML への変換、または後方変換でも、ID を使用して Java プロジェクトと UML モデル間の対応する要素をマッチングすることができます。この方法を使用すると、Java ソース・コード要素に対する変更は、生成されたコードの追加や削除ではなく、変更として、またはコードのリファクタリングとして扱われます。

ソース・モデル要素と変換出力の関係を表示するには、ソース・モデル要素を図にして可視化し、変換によって生成されたコード要素をその図の中にドラッグします。以下の表は、id という名前の整数属性が含まれる Class1 という名前のソース・モデル要素の UML 表現と、パラメーターを持たない Operation1 という名前の操作、変換によって生成されるコード、および要素間のトレース関係を示すクラス図をリストしています。
表 1.
UML 要素 変換出力 クラス図のトレース関係
前のパラグラフで説明されている EntityClass という名前のクラスの UML 表記。
/**
 * 
 */

import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Entity;
import java.io.Serializable;

/** 
 * <!-- begin-UML-doc -->
 * <!-- end-UML-doc -->
  * @uml.annotations
 *     derived_abstraction="platform:/resource/Miscellaneous%20Models/Blank%20Package1.emx#_sQ4U4J-QEd2RedZBNurApQ"
 * @generated "sourceid:platform:/resource/Miscellaneous%20Models/Blank%20Package1.emx#_sQ4U4J-QEd2RedZBNurApQ"
 */
@Entity
@NamedQuery(name = "EntityClass.findByid", query = "select obj from EntityClass where obj.id = :id")
public class EntityClass implements Serializable {
	/** 
	 * <!-- begin-UML-doc -->
	 * <!-- end-UML-doc -->
	 * @generated "sourceid:platform:/resource/Miscellaneous%20Models/Blank%20Package1.emx#_sRjDQZ-QEd2RedZBNurApQ"
	 */
	@Id
	private Integer id;

	/** 
	 * @return the id
	 * @generated "sourceid:platform:/resource/Miscellaneous%20Models/Blank%20Package1.emx#_sRjDQZ-QEd2RedZBNurApQ?GETTER"
	 */
	public Integer getId() {
		// begin-user-code
		return id;
		// end-user-code
	}

	/** 
	 * @param id the id to set
	 * @generated "sourceid:platform:/resource/Miscellaneous%20Models/Blank%20Package1.emx#_sRjDQZ-QEd2RedZBNurApQ?SETTER"
	 */
	public void setId(Integer id) {
		// begin-user-code
		this.id = id;
		// end-user-code
	}

	/** 
	/** 
	 * <!-- begin-UML-doc -->
	 * <!-- end-UML-doc -->
	 * @generated "sourceid:platform:/resource/Miscellaneous%20Models/Blank%20Package1.emx#_s0NrcJ-QEd2RedZBNurApQ"
	 */
	public void Operation1() {
		// begin-user-code
		// TODO 自動生成されたメソッド・スタブ

		// end-user-code
	}

	/** 
	 * <!-- begin-UML-doc -->
	 * <!-- end-UML-doc -->
	 * @generated
	 */
	private static final long serialVersionUID = 0;

	/** 
	 * <!-- begin-UML-doc -->
	 * <!-- end-UML-doc -->
	 * @generated
	 */
	public EntityClass() {
	}
EntityClass の UML 表記と変換出力の間の、派生ステレオタイプが適用されたトレース関係。

変換によってトレース関係を生成するように指定した場合には、ソース・モデルは変換によって変更されません。

チーム・サポートとの統合

変換は、ファイルの自動チェックアウトや新規ファイルの追加を可能にする IBM® Rational® Team Concert、CVS、Rational ClearCase®、および Rational ClearCase LT バージョン管理システムとの統合機能を提供します。構成管理システムを使用するには、チーム機能を有効にする必要があります。


フィードバック