「連載:わかりやすいJPA」の予備知識

JpqlTestで操作できるエンティティ(ドメインモデル)

解説を読む前に、解説で例示などに使うエンティティについて理解しておきましょう。

ブログでの連載記事、「わかりやすいJPA」では、クエリを実行して動作を確認するためのツールとして、書籍『Pro JPA2(Expert’s Voice in Java) 』(Mike Keith , Merrick Schincariol,  Apress社, 2013)のサポートサイトにあるツールとデータベースを利用します。使用するエンティティのセット(ドメインモデルといいます)は、Employeeエンティティを中心に5つあります。次の図を見て、関係を把握しください。

domain model

Employeeエンティティ

中心になるエンティティで、id, name(氏名), salary(給与), date(入社期日) などの基本項目に加えて、address(住所記録)、phones(所有するすべての電話)、department(部署)、maneger(直属の上司)、direct(統括するすべての部下)、project(所属するプロジェクトチーム)などがあります。

その他のエンティティ

Employeeのメンバを順に見ていけば、すぐに関係が理解できます。

まず、addressはAddressエンティティを参照する一方向のOne-To-Oneの関係です。一方向であることを示すために、矢印は片側にだけ付けています。これ以外のオブジェクトメンバは全て双方向です。

phoneは所有する電話のリストで、複数の電話番号をもっているため、PhoneエンティティのemployeesとOne-To-Manyの関係です。

departmentは所属部署です。同じ部署には複数の社員が所属するので、DepartmentエンティティのemployeesとMany-To-Oneの関係です。

managerは直属の上司を表します。ManegerがEmployee型であることに注意してください。一人のmanagerに複数の部下がいるので、EmployeeエンティティのdirectとMany-To-Oneの関係です。

directは直属の部下を表しています。同じEmployeeエンティティのmanagerとOne-To-Manyの関係になります。このように、Employeeエンティティの中に、Employee型にもとづく関係があっても何ら問題ありません。

最後に、projectは所属するプロジェクトチームを表します。一人の社員が複数のプロジェクトに所属する一方、ひとつのプロジェクトには複数の社員が所属するので、これはProjectエンティティのemployeesとMany-To-Manyの関係です。

※データベースには、この他ProjectのサブクラスであるDesigenProjectエンティティとQualithProjectエンティティが含まれています。

クエリを実行して試せるJpqlTest

書籍『Pro JPA2(Expert’s Voice in Java) 』(Mike Keith , Merrick Schincariol,  Apress社, 2013)のサポートサイトにあるツールを、クエリを実行して動作を確認するために使用します。原本はサーブレットでしたが、簡単に実行できるようにJSFアプリケーションに直し、NetBeans用のプロジェクトファイルにしました。また、CSSを追加して、結果リストが見やすくなるようにしました。

解説を読む前に、ダウンロードして手元で実行できるようにしておいてください。次のリンクからプロジェクトファイルをダウンロードできます。

ただし、プロジェクトを実行する前に以下の手順を実行してください。

(手順1)プロジェクトを実行する前に、データベースを作成する

  1. ダウンロードしたJpqlTest.zipを適切な場所に解凍する。内容はJpqlTextプロジェクトとdb.sqlです。
  2. NetBeansを起動し、サービスタブを開く
  3. 普段使っているデータベース接続をマウスの右ボタンでクリックし、[コマンドの実行]を選ぶ
  4. エディタがコマンド画面になるので、db.sqlファイルの内容をここにペーストする
    (あるいは、エクスプローラーからファイルアイコンをドラッグ・ドロップしてもよい)
  5. コマンド画面の上部にある[履歴 接続]のドロップダウンボックスをクリックし、データベース接続を選ぶ。3.でクリックした普段使っているデータベース接続を選択するとよい。
  6. [SQLの実行]ボタンを押す

(手順2)永続性ユニットを作成する

  1. JpqlTestプロジェクトを右クリックし、[新規]⇒[その他]と選択する
  2. 新規ファイルダイアログの左欄で[持続性]、右欄で[持続性ユニット]を選択して、[次へ]を押す
  3. [New持続性ユニット]で、[データソース]欄に適切なデータソースを指定して[終了]を押す。データソースは、db.sqlでテーブルとデータを作成したデータベースに関連づけられているものを選択する。
    (「わかりやすいJavaEE」ではjdbc/mydbでした)

目次に戻る