以前のエントリでProjectの作成まで書いたので、Entity作成についてのメモです。
以前のエントリはこちら
Spring Roo Install
[Spring Roo]プロジェクト作成, Logging&DB接続設定
- roo shell上でentityコマンドを実行することでEntityが作成されます。下記はProjectというEntityを作成する例です。
1 roo> entity --class ~.model.Project --testAuto matically 2 Created SRC_MAIN_J AVA\com\example\model 3 Created SRC_MAIN_J AVA\com\example\model\Project.jav a 4 Created SRC_TEST_J AVA\com\example\model 5 Created SRC_TEST_J AVA\com\example\model\ProjectData OnDemand.j ava 6 Created SRC_TEST_J AVA\com\example\model\ProjectInte grationTes t.java 7 Created SRC_MAIN_J AVA\com\example\model\Project_Roo _Configura ble.aj 8 Created SRC_MAIN_J AVA\com\example\model\Project_Roo _Entity.aj 9 Created SRC_MAIN_J AVA\com\example\model\Project_Roo _ToString. aj 10 Created SRC_TEST_J AVA\com\example\model\ProjectData OnDemand_R oo_Configu rable.aj 11 Created SRC_TEST_J AVA\com\example\model\ProjectData OnDemand_R oo_DataOnD emand.aj 12 Created SRC_TEST_J AVA\com\example\model\ProjectInte grationTes t_Roo_Conf igurable.a j 13 Created SRC_TEST_J AVA\com\example\model\ProjectInte grationTes t_Roo_Inte grationTes t.aj
com.exampl
eパッケージの下にmodelパッケージが作成され、その下にProjectクラス(Project.ja va)が作成されます。そしてそれに関連するjavaクラスファイル、AspectJのファイルやテストクラスが自動生成されます。 続いてEntity内の各プロパティを追加していきます。Entity作成直後はそのEntityにフォーカスがあたっていますが、他のEntityの作業をしたあとなど、対象のEntityにフォーカスがあたっていない場合は、focusコマンドで対象のEntityにフォーカスを当てます。
1 roo> focus --class ~.model.Project
- チルダ(~)はベースのパッケージを表すので、ここではcom.exampl
eにあたります。roo shellのプロンプトが下記のようになっていればProject Entityにフォーカスがあたっています。
1 ~.model.Project roo>
- プロパティの追加はfieldコマンドで行います。下記は文字列型のnameというプロパティを追加する例です。
1 ~.model.Project roo> field string --fieldNam e name 2 Updated SRC_MAIN_J AVA\com\example\model\Project.jav a 3 Created SRC_MAIN_J AVA\com\example\model\Project_Roo _JavaBean. aj 4 Updated SRC_TEST_J AVA\com\example\model\ProjectData OnDemand_R oo_DataOnD emand.aj 5 Updated SRC_MAIN_J AVA\com\example\model\Project_Roo _ToString. aj
Project.ja
vaがと関連するファイルが更新・作成されます。 プロパティに最大文字数やNull禁止の制約をつけたい場合には、プロパティ追加時に下記のようなオプションを追加します。
1 ~.model.Project roo> field string --fieldNam e name --notNull --sizeMax 30 2 Updated SRC_MAIN_J AVA\com\example\model\Project.jav a 3 Updated SRC_TEST_J AVA\com\example\model\ProjectData OnDemand_R oo_DataOnD emand.aj 4 Created SRC_MAIN_J AVA\com\example\model\Project_Roo _JavaBean. aj 5 Updated SRC_MAIN_J AVA\com\example\model\Project_Roo _ToString. aj
上記の例は最大文字数は30文字でNullは禁止する例です。
数値型のプロパティを追加する場合には型としてnumberを指定し、--typeオプションでJavaのクラスを指定します。
1 ~.model.Project roo> field number --fieldNam e cnt --type java.lang. Integer
- 日付型の場合もJavaのクラス名をあわせて指定します。
1 ~.model.Project roo> field date --fieldNam e createdTim e --type java.util. Date
- 他のクラスへの関連をプロパティとして持つには、fieldコマンドの型の指定でsetを指定し、--typeで対象のクラス、--cardinal
ityオプションで関連の持ち方、--mappedBy オプションでもう一方のEntityからこのEntityを参照するためのフィールド名を指定します。下記はProject EntityがSubProject Entityへの関連を一対多で持つ例です。SubProject Entityからはprojectというフィールド名でProject Entityを参照します。
1 ~.model.Project roo> field set --fieldNam e subProject s --type ~.model.Sub Project --cardinal ity ONE_TO_MAN Y --mappedBy project
関連が多対一の場合には上記コマンドの--cardinal
ityをMANY_TO_ON Eに、多対多の場合にはMANY_TO_MA NYに変更します。 ここまでを必要なEntityとプロパティに対して実行すれば、アプリケーションの起動時に対応するテーブルがDBに作成されます。
posted by
akanuma
on Wed 30 Nov 2011
at 08:38