Workshop には、EJB3 エンティティの編集や、永続性コンテキストを記述する persistence.xml ファイルの編集を行うためのグラフィカルなインタフェースが用意されています。
このトピックで説明するように、[エンティティ エディタ] を使用するとエンティティをグラフィカルに表示できます。[エンティティ エディタ] では、エンティティ間の関係の表示、データベースとの関係の編集、エンティティ Bean のソース コードへのアクセス、追加のマッピングの作成などの操作を行えます。
persistence.xml ファイルは、ファイルの構造や値に簡単にアクセスできるグラフィカルなインタフェースを使用して編集できます。編集機能の詳細については、「JPA プロパティのコンフィグレーション」を参照してください。
このトピックでは、以下に示す [エンティティ エディタ] の各操作について説明します。
[エンティティ エディタ] では、エンティティ Bean およびそのフィールドの両方のプロパティを編集できます。[エンティティ エディタ] を起動するには、[AppXplorer] で [エンティティ エディタ] をダブルクリックします。
エディタ内のエンティティを選択するには、エンティティの名前 (ここでは「Customer」) をクリックします。エンティティを選択すると、そのプロパティが [スマート エディタ] に表示されます。エンティティのプロパティ (エンティティがどのデータベース テーブルと対話するかなど) はここで変更できます。エンティティを右クリックすると、ソース コードを表示したり、エンティティを削除したりできます。エンティティやフィールドのソース コードは、[エンティティ エディタ] でエンティティまたはフィールドをダブルクリックして表示することもできます。
[エンティティ エディタ] 内のフィールドを選択するには、プロパティまたはフィールドの名前をクリックします。プロパティやフィールドのプロパティは [スマート エディタ] に表示されます。表示されるプロパティは、選択したプロパティの種類によって異なります。
エンティティ マッピングを作成する場合は、プロパティの種類として、基本、ID、多対一、一対一、一対多、多対多の 6 つの中から 1 つを選んで各プロパティを定義します。エンティティをデータベースから生成する場合は、特定のプロパティの種類を示す EJB 3.0 アノテーションが、生成されるソース コードに追加されます。[スマート エディタ] には、エンティティ Bean のコード内に指定されているアノテーションが表示されます。
以下では、アノテーションがどのように変換されて [スマート エディタ] に表示されるかについて簡単に説明します。なお、[スマート エディタ] に下線付きで表示されているラベルをクリックすると、対応する Java ソース コードまたは [DbXplorer] の項目を表示できます。
ここで説明するプロパティの種類は以下のとおりです。
基本プロパティは、そのままの状態でデータベースに永続化される標準的な値を扱います。つまり、非常に単純なプロパティです。[スマート エディタ] には、プロパティの名前と種類に加え、@Basic
アノテーションに付随する @Column
アノテーションの以下の値が表示されます。
![]() |
![]() |
![]() |
||||||||||||||
![]() |
|
![]() |
||||||||||||||
![]() |
![]() |
![]() |
明示的に設定されなかった値はデフォルトのままとなります。デフォルト値は、ソース コードに記述する必要はなく、[スマート エディタ] ではグレーで表示されます。明示的に設定した値は、ソース コード内のアノテーションに属性値として記述されます。
一対多プロパティは、1 つの A エンティティが複数の B エンティティを参照し、複数の A エンティティが同じ B エンティティを参照することのない関係を示します。次の例では、1 つの Customer エンティティが複数の Order エンティティを参照していますが、Order エンティティが参照する Customer エンティティは 1 つに限定されています。[スマート エディタ] には、プロパティの名前と種類に加え、@OneToMany
アノテーションの属性に対応する以下の値が表示されます。
![]() |
![]() |
![]() |
||||||||||
![]() |
|
![]() |
||||||||||
![]() |
![]() |
![]() |
[スマート エディタ] の [並べ替え] プロパティは、エンティティのソートに使用するカラム値を示す @OrderBy
アノテーションを表します。
注意 : 一対多プロパティおよび多対一プロパティを生成すると、複数のエンティティ Bean が作成またはアノテーションされます。 たとえば、次に示す Customer エンティティの一対多 orders プロパティの場合、Order エンティティには多対一 customer プロパティが生成されます。このプロパティと対をなすプロパティの例については、「多対一プロパティ」を参照してください。
多対一プロパティは、あるエンティティ A が 1 つのエンティティ B を参照し、それ以外の複数のエンティティ A も同じエンティティ B を参照する可能性がある関係を示します (この場合は A から B への多対一関係になります)。[スマート エディタ] には、プロパティの名前と種類に加え、@ManyToOne
アノテーションの属性に対応する以下の値が表示されます。
![]() |
![]() |
![]() |
||||||
![]() |
|
![]() |
||||||
![]() |
![]() |
![]() |
[スマート エディタ] に表示される以下のプロパティは、@JoinColumn
アノテーションの属性に対応します。
![]() |
![]() |
![]() |
||||||||||||||
![]() |
|
![]() |
||||||||||||||
![]() |
![]() |
![]() |
注意 : 一対多プロパティおよび多対一プロパティを生成すると、複数のエンティティ Bean が作成またはアノテーションされます。 たとえば、次に示す Orders エンティティの多対一 customer プロパティの場合、Customer エンティティには一対多 orders プロパティが生成されます。このプロパティと対をなすプロパティの例については、「一対多プロパティ」を参照してください。
一対一プロパティは、1 つのエンティティ A が 1 つのエンティティ B を参照し、それ以外のエンティティ A が同じエンティティ B を参照できない関係を示します (この場合は A と B の間の一対一関係になります)。
[スマート エディタ] で使用できるほとんどのプロパティは、多対一のプロパティと同じです。[マッピング基準] プロパティについては、一対多プロパティを参照してください。
多対多プロパティは、あるエンティティ A が複数のエンティティ B を参照し、他の複数のエンティティ A も同じエンティティ B を参照する可能性がある関係を示します (この場合は A と B の間の多対多関係になります)。[スマート エディタ] には、プロパティの名前と種類に加え、@ManyToMany
アノテーションの属性に対応する以下の値が表示されます。
![]() |
![]() |
![]() |
||||||||||
![]() |
|
![]() |
||||||||||
![]() |
![]() |
![]() |
[スマート エディタ] の [並べ替え] プロパティは、エンティティのソートに使用するカラム値を示す @OrderBy
アノテーションを表します。
[スマート エディタ] には、@JoinTable
アノテーション属性の以下の値も表示されます。
![]() |
![]() |
![]() |
||||||||
![]() |
|
![]() |
||||||||
![]() |
![]() |
![]() |
ID プロパティは、主キーなどの識別子を示します。すべてのエンティティ Bean では、インスタンスの永続 ID を形成する 1 つまたは複数のフィールドを宣言する必要があります。[スマート エディタ] には、プロパティの名前と種類に加え、@Id
アノテーションの属性に対応する以下の値が表示されます。
![]() |
![]() |
![]() |
||||
![]() |
|
![]() |
||||
![]() |
![]() |
![]() |
[スマート エディタ] には、@Column
アノテーションの属性に対応する以下の値も表示されます。
![]() |
![]() |
![]() |
||||||||
![]() |
|
![]() |
||||||||
![]() |
![]() |
![]() |
プロパティの値を編集するだけでなく、さまざまな情報を表示することもできます。プロパティ名をクリックするとエンティティのソース コードが、プロパティの種類をクリックするとその種類に関する情報が、カラム名をクリックするとデータベース カラムのデータベース ダイアグラムがそれぞれ表示されます。フィールドを右クリックすると、そのソース コードを表示したり、マッピングを解除したり、エンティティ自体を削除したりできます。
[フィルタ] ドロップダウンからフィルタを選択すると、[エンティティ エディタ] に表示される関係線の数を減らすことができます。この機能は、数多くのエンティティが複雑に関係している場合に便利です。
新しいエンティティ マッピングを作成するには、[エンティティ エディタ] の右上のアイコンをクリックします。これらのアイコンをクリックすると、エンティティ マッピングを生成するためのウィザードが起動します。これらのウィザードの詳細については、「JPA マッピングのスキーマからの作成」および「JPA の既存クラスのアノテーション」を参照してください。