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

以前のエントリはこちら

Spring Roo Install

[Spring Roo]プロジェクト作成, Logging&DB接続設定

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

sh>>
roo> entity --class ~.model.Project --testAutomatically
Created SRC_MAIN_JAVA\com\example\model
Created SRC_MAIN_JAVA\com\example\model\Project.java
Created SRC_TEST_JAVA\com\example\model
Created SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand.java
Created SRC_TEST_JAVA\com\example\model\ProjectIntegrationTest.java
Created SRC_MAIN_JAVA\com\example\model\Project_Roo_Configurable.aj
Created SRC_MAIN_JAVA\com\example\model\Project_Roo_Entity.aj
Created SRC_MAIN_JAVA\com\example\model\Project_Roo_ToString.aj
Created SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand_Roo_Configurable.aj
Created SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand_Roo_DataOnDemand.aj
Created SRC_TEST_JAVA\com\example\model\ProjectIntegrationTest_Roo_Configurable.aj
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にフォーカスを当てます。

sh>>
roo> focus --class ~.model.Project
<<--

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

sh>>
~.model.Project roo>
<<--

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

sh>>
~.model.Project roo> field string --fieldName name
Updated SRC_MAIN_JAVA\com\example\model\Project.java
Created SRC_MAIN_JAVA\com\example\model\Project_Roo_JavaBean.aj
Updated SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand_Roo_DataOnDemand.aj
Updated SRC_MAIN_JAVA\com\example\model\Project_Roo_ToString.aj
<<--

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

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

sh>>
~.model.Project roo> field string --fieldName name --notNull --sizeMax 30
Updated SRC_MAIN_JAVA\com\example\model\Project.java
Updated SRC_TEST_JAVA\com\example\model\ProjectDataOnDemand_Roo_DataOnDemand.aj
Created SRC_MAIN_JAVA\com\example\model\Project_Roo_JavaBean.aj
Updated SRC_MAIN_JAVA\com\example\model\Project_Roo_ToString.aj
<<--

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

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

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

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

sh>>
~.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を参照します。

sh>>
~.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 akanuma akanuma on Wed 30 Nov 2011 at 08:39 with 0 comments
Contents rssrss
[Rails]to_travel は DateTime.now に対応してない
[Rails]RailsアプリにPassengerから環境変数を渡す
[Rails]Rails4 で datetimepicker を使う
[Vagrant] VM上のUbuntuから名前解決できない
[Rails]Passengerがgitからinstallしたgemを認識しない
[Rails][MessagePack] APIレスポンスとしてのMessagePack検証
[mongodb][couchbase] MongoDBとCouchbaseを比べてみました
[Rails][MySQL] RailsでMySQLを使う
[MySQL] MacにMySQLをインストール
[Rails] APサーバの比較検証(Puma, Unicorn, Passenger)
Tags
railsPassengermysqlRails,Ruby,bootstrapChefCouchbasedatetimepickerMessagePackMongoDBnginxPuma,RSpecrubyubuntuUnicorn,Vagrant
Comments rssrss
yoku0825 yoku0825: nkfの方が使いやすいですが、glibcに含まれているiconvの方が 確実にどの環境にも入っている... 06/11 07:03
Hiroaki Akanuma Hiroaki Akanuma: ご指摘ありがとうございます。「嗜好度は大きい値がより嗜好度が強いことを意味すればどのような値でもよい... 11/08 12:50
akr akr: 初めての推薦エンジンのところ 「属性データはどんなものでも可能。」 は preference val... 11/08 11:18
Services from s21g
YOMU Web小説リーダー
小説投稿サイトの公式ページを開き、WebView表示と読み上げ向け表示を切り替えて、移動中や作業中にもWeb小説の続きを聴きやすくするiPhoneアプリです。
補助探
公開されている補助金・助成金情報を集約し、条件に合う制度を探しやすくするサービスです。
jotter.me
個人開発者のためのホスティング一体型ノートサービス
ハンドミラー
iPhone向けの手鏡アプリ
ツイプロ(twpro)
Twitterプロフィールの高速検索エンジン