• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

 以前のエントリでProjectの作成まで書いたので、Entity作成についてのメモです。

以前のエントリはこちら
Spring Roo Install
[Spring Roo]プロジェクト作成, Logging&DB接続設定

  • roo shell上でentityコマンドを実行することでEntityが作成されます。下記はProjectというEntityを作成する例です。

   1  roo> entity --class ~.model.Project --testAutomatically
   2  Created SRC_MAIN_JAVA\com\example\model
   3  Created SRC_MAIN_JAVA\com\example\model\Project.java
   4  Created SRC_TEST_JAVA\com\example\model
   5  Created SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand.java
   6  Created SRC_TEST_JAVA\com\example\model\ProjectIntegrationTest.java
   7  Created SRC_MAIN_JAVA\com\example\model\Project_Roo_Configurable.aj
   8  Created SRC_MAIN_JAVA\com\example\model\Project_Roo_Entity.aj
   9  Created SRC_MAIN_JAVA\com\example\model\Project_Roo_ToString.aj
  10  Created SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand_Roo_Configurable.aj
  11  Created SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand_Roo_DataOnDemand.aj
  12  Created SRC_TEST_JAVA\com\example\model\ProjectIntegrationTest_Roo_Configurable.aj
  13  Created SRC_TEST_JAVA\com\example\model\ProjectIntegrationTest_Roo_IntegrationTest.aj

  • com.exampleパッケージの下にmodelパッケージが作成され、その下にProjectクラス(Project.java)が作成されます。そしてそれに関連するjavaクラスファイル、AspectJのファイルやテストクラスが自動生成されます。

  • 続いてEntity内の各プロパティを追加していきます。Entity作成直後はそのEntityにフォーカスがあたっていますが、他のEntityの作業をしたあとなど、対象のEntityにフォーカスがあたっていない場合は、focusコマンドで対象のEntityにフォーカスを当てます。

   1  roo> focus --class ~.model.Project

  • チルダ(~)はベースのパッケージを表すので、ここではcom.exampleにあたります。roo shellのプロンプトが下記のようになっていればProject Entityにフォーカスがあたっています。

   1  ~.model.Project roo>

  • プロパティの追加はfieldコマンドで行います。下記は文字列型のnameというプロパティを追加する例です。

   1  ~.model.Project roo> field string --fieldName name
   2  Updated SRC_MAIN_JAVA\com\example\model\Project.java
   3  Created SRC_MAIN_JAVA\com\example\model\Project_Roo_JavaBean.aj
   4  Updated SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand_Roo_DataOnDemand.aj
   5  Updated SRC_MAIN_JAVA\com\example\model\Project_Roo_ToString.aj

  • Project.javaがと関連するファイルが更新・作成されます。

  • プロパティに最大文字数やNull禁止の制約をつけたい場合には、プロパティ追加時に下記のようなオプションを追加します。

   1  ~.model.Project roo> field string --fieldName name --notNull --sizeMax 30
   2  Updated SRC_MAIN_JAVA\com\example\model\Project.java
   3  Updated SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand_Roo_DataOnDemand.aj
   4  Created SRC_MAIN_JAVA\com\example\model\Project_Roo_JavaBean.aj
   5  Updated SRC_MAIN_JAVA\com\example\model\Project_Roo_ToString.aj

  • 上記の例は最大文字数は30文字でNullは禁止する例です。

  • 数値型のプロパティを追加する場合には型としてnumberを指定し、--typeオプションでJavaのクラスを指定します。

   1  ~.model.Project roo> field number --fieldName cnt --type java.lang.Integer

  • 日付型の場合もJavaのクラス名をあわせて指定します。

   1  ~.model.Project roo> field date --fieldName createdTime --type java.util.Date

  • 他のクラスへの関連をプロパティとして持つには、fieldコマンドの型の指定でsetを指定し、--typeで対象のクラス、--cardinalityオプションで関連の持ち方、--mappedByオプションでもう一方のEntityからこのEntityを参照するためのフィールド名を指定します。下記はProject EntityがSubProject Entityへの関連を一対多で持つ例です。SubProject Entityからはprojectというフィールド名でProject Entityを参照します。

   1  ~.model.Project roo> field set --fieldName subProjects --type ~.model.SubProject --cardinality ONE_TO_MANY --mappedBy project

  • 関連が多対一の場合には上記コマンドの--cardinalityをMANY_TO_ONEに、多対多の場合にはMANY_TO_MANYに変更します。

  • ここまでを必要なEntityとプロパティに対して実行すれば、アプリケーションの起動時に対応するテーブルがDBに作成されます。

posted by Png akanuma on Wed 30 Nov 2011 at 08:38

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry2028
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ