プロダクトレビュー
話題のO/Rマッピングツール「Cayenne」を使う
サンプルアプリケーションを作成する |
それではいよいよ、実際にCayenneを利用したデータベースアクセスを行うサンプル・アプリケーションを作成しながら、Cayenneの特徴を見ていくことにしましょう。
■CayenneModelerを使ったマッピング・ファイルとエンティティ・クラスの生成
Cayenneではデータベースとの接続情報やマッピング情報などは次のようなXML形式のファイルによって定義されます。
- cayenne.xml
Cayenneプロジェクトの単位
DataDomain(DataMapとDataNodeを含む)を定義
- ××.map.xml
データベース・エンティティとのマッピング情報(DataMap)を定義
- ××.driver.xml
データベースとの接続情報(DataNode)を定義
物理的な1つのデータソースに対応
これらのファイルはテキスト・エディタを用いて直接作成したり編集したりすることも可能ですが、Cayenneでは「CayenneModeler」と呼ばれる付属のGUIツールを使うことで上記XMLファイルやエンティティ・クラスを自動的に生成することができます。本稿ではこのCayenneModelerを使って定義ファイルを作成していきます。
さて、実際にデータベースとのマッピングを行っていく前に、サンプル・プログラムで使用するデータベース・スキーマの定義を図5に示しておきます。従業員表となるEmployeeテーブルと、それぞれの従業員が所属する部署表となるDepartment表の2つを使用します。EmployeeのDptCodeがDepartmentのCodeを参照するリレーションを設定します。
図5 Employee表とDepartment表 |
テーブルを作成するSQL文は次のとおりです。
CREATE TABLE Department( |
Department表およびEmployee表には以下のようなレコードを格納しておきます。
mysql> select * from department; |
では早速CayenneModelerを起動してみましょう。Cayenneをインストールしたディレクトリ下の「bin」ディレクトリにある「modeler.bat」をダブルクリックしてください。CayenneModelerが起動します。
■CayenneModelerによるデータベース・マッピングの手順
(1)新しいプロジェクトの作成
[File]→[New Project]を選択して新しいプロジェクトを作成します。
ダイアログが表示されるので[Create Application]ボタンをクリックしてください。
(2)DataDomainの作成
[Project]→[Create DataDomain]をクリックしてDataDomainを作成します。
新しいDataDomainが作成されます。DataDomain名を任意の名前に変更することができます。ここでは「SampleDomain」という名前に変更しています。
(3)DataNodeの作成
[Project]→[Create DataNode]をクリックしてDataNodeを作成してください。
DataNodeが作成されたらDBへの接続情報を入力します。JDBCドライバを使用する場合、[DataSource Factory:]には「DriverDataSourceFactory」を選択します。[DB Adapter:]には使用するDBに対応するアダプタ・クラスを選択します。ここでは「MySQLAdapter」を選択しています。DataSource Infoには環境に応じた接続情報(DBのユーザー名やパスワード、JDBCドライバなど)を入力してください。また、任意のDataNode名を付けることができます。
(4)JDBCドライバのクラスパス設定
[Tools]→[Configure ClassPath]をクリックしてJDBCドライバのクラスパス設定を行います。ダイアログが表示されますので適切なJDBCドライバ・クラスを選択し、設定を行ってください。
(5)Database Schemaのリエンジニアリング
[Tools]→[Reengineering Database Schema]をクリックしてデータベース・エンティティの情報を取り込みます。
接続情報ダイアログが表示されるので[OK]ボタンを押してください。
次に「Schema Selector」ダイアログが表示されます。このダイアログではマッピング対象とするテーブルを選択します。「%」記号を使用した場合、接続しているデータベースのすべてのテーブルに対してマッピングを行います。個別にテーブル名を指定することも可能です。
[Continue] ボタンをクリックするとDepartmentテーブルとEmployeeテーブルに対するDataMapが作成されます。
(6)リレーションの設定
次にEmployeeとDepartmentのリレーションの設定を行います。左側のビューでEmployeeを選択し、ツールバーの「Create Relationship」アイコンをクリックします。
Relationshipsのタブで[Name]に任意のリレーション名を付け(ここでは「EmpToDptRel」という名前を付けています。ここで付けた名前のリレーション・メソッドが生成されます)、[Target]に「Department」を選択して、[Edit Relationship]ボタンをクリックしてください。
ダイアログが表示されるので[New To-One DbRelationship]ボタンをクリックします。
リレーションの対応付けを行うフィールドを選択します。「Source」側では「DptCode」を、「Target」側では「Code」を選んで[Done]ボタンをクリックしてダイアログを閉じてください。
(7)エンティティ・クラスの生成
次にエンティティ・クラスの生成を行います。[Tools]→[Generate Classes]をクリックしてください。
ダイアログが表示されます。「Output Directory」に、生成されるクラスの出力ディレクトリを入力してください([Select]ボタンで選択することも可)。今回のサンプルではC:\cayenne-1.1\sampleディレクトリをプロジェクト・ディレクトリとしています。また、今回のサンプルではパッケージを使用しないため「Superclass Package」にデフォルトで記述されている「auto」を削除しています。
この作業によってsampleディレクトリに次の4つのクラスが作成されます。
- _Employee.java
- _Department.java
- Employee.java
- Department.java
頭に「_」の付いている「_Employee」と「_Department」クラスが基底クラス(エンティティ・クラスとしてのデフォルト実装が含まれている)となり、「Employee」と「Department」はその基底クラスを継承している空実装(クラス定義だけ)のクラスです。開発者がエンティティ・クラスにカスタムの処理を加える場合には、この空実装のクラスに対してコードを追加します。このようなデザインになっているおかげで、CayenneModelerによって生成されるコードと開発者が独自に加えたコードを明確に分離することができ、メンテナンス性を高めることができます(一般的にはGeneration Gapパターンとして知られている手法です)。
それでは、ここまでで定義したマッピング情報を保存しておきましょう。ツールバーの[保存]ボタンをクリックして、保存先ディレクトリにsampleディレクトリ(プロジェクトのトップ・ディレクトリ)を選択してください。
これによって以下の3つのファイルが作成されます。
- cayenne.xml
- Emp.map.xml
- MySQLDataNode.driver.xml
注:これらの定義ファイルはCayenneModelerで「cayenne.xml」ファイルを開くことで修正が可能です。
ここまでできたら、自動生成されたクラスをコンパイルして、準備完了です。次ページから、いよいよCayenneの使い勝手を具体的に見ていきましょう。
2/3 |
INDEX |
||
話題のO/Rマッピングツール「Cayenne」を使う | ||
Page1 Cayenneの構造と仕組み |
||
Page2 サンプルアプリケーションを作成する |
||
Page3 Cayenneを実際に使ってみる |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|