Spring Rooの最もベーシックな使い方はroo shell上でentityコマンドを使ってEntityを作成していくやり方ですが、既にDB上にテーブルが存在していて、そのテーブルをEntityとして使用するアプリケーションを作ることもできます。
Rooのインストール、プロジェクトの作成、DBの接続設定までは同様の手順で行います。
Spring Roo Install
[Spring Roo]プロジェクト作成, Logging&DB接続設定
これ以降の手順は下記ページを参考に実施していきます。
Chapter 9. Incrementa
Database Reverse Engineerin
1 com.example roo> database introspect --schema no-schema- required 2 Located add-ons that may offer this JDBC driver 3 2 found, sorted by rank; T = trusted developer; R = Roo 1.1 compatible 4 ID T R DESCRIPTIO N ---------- ---------- ---------- ---------- ---------- ---------- - 5 01 - Y 9.0.0.801_ jdbc4_0001 PostgreSQL #jdbcdriver ... 6 02 Y Y 9.0.801.00 01 Postgres #jdbcdriver driverclas s:org.post gresql.Dri ver.... 7 ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- 8 [HINT] use 'addon info id --searchRe sultId ..' to see details about a search result 9 [HINT] use 'addon install id --searchRe sultId ..' to install a specific search result, or 10 [HINT] use 'addon install bundle --bundleSy mbolicName TAB' to install a specific add-on version 11 JDBC driver not available for 'org.postgr esql.Drive r'
ここで addon info コマンドを使うことで検出されたドライバの詳細情報を見ることが出来ます。
1 com.example roo> addon info id --searchRe sultId 01 2 Name...... ...: spring-roo -postgres- jdbc4-wrap per 3 BSN....... ...: org.postgr esql.roo.w rapper.pos tgresql 4 Version... ...: 9.0.0.801_ jdbc4_0001 5 Roo Version..: 1.1 6 Ranking... ...: 0.0 7 JAR Size.....: 546943 bytes 8 PGP Signature: 0x36673F56 signed by Ingo Thierack (ingothiera ck@googlemail .com) 9 OBR URL......: http://spr ing-roo-po stgres-jdb c4-wrapper .googlecod e.com/svn/ repo/ 10 repository .xml 11 JAR URL......: httppgp:// spring-roo -postgres- jdbc4-wrap per.google code.com/s vn/re 12 po/org/pos tgresql/ro o/wrapper/ org.postgr esql.roo.w rapper.pos tgres 13 ql/9.0-801 .jdbc4.000 1/org.post gresql.roo .wrapper.p ostgresql- 9.0-8 14 01.jdbc4.0 001.jar 15 Descriptio n..: PostgreSQL #jdbcdriver driverclas s:org.post gresql.Dri ver. This 16 bundle wraps the standard Maven artifact: 17 postgresql -9.0-801.j dbc4.
最新のドライバをインストールするために、下記コマンドを実行します。
1 com.example roo> addon install id --searchRe sultId 01 2 Download URL 'http://spr ing-roo-po stgres-jdb c4-wrapper .googlecod e.com/svn/ repo/org/p ostgresql/ roo/wrappe r/org.post gresql 3 .roo.wrapp er.postgre sql/9.0-80 1.jdbc4.00 01/org.pos tgresql.ro o.wrapper. postgresql -9.0-801.j dbc4.0001. jar' failed 4 This resource was signed with PGP key ID '0x36673F56 ', which is not currently trusted 5 Use 'pgp key view' to view this key, 'pgp trust' to trust it, or 'pgp automatic trust' to trust any keys 6 Target resource(s): 7 ---------- --------- 8 spring-roo -postgres- jdbc4-wrap per (9.0.0.801_ jdbc4_0001 ) 9 10 Deploying. ..done. 11 12 Unable to install add-on: spring-roo -postgres- jdbc4-wrap per [version: 9.0.0.801_ jdbc4_0001 ]
おや、インストールに失敗してしまいました。どうやらドライバのダウンロードURLのKeyが信頼されていないということのようです。pgp key view コマンドを使用してkeyの情報を表示します。
1 com.example roo> pgp key view --keyId 0x36673F56 2 >>>> KEY ID: 0x36673F56 <<<< 3 More Info: http://key server.ubu ntu.com/pk s/lookup?fingerprin t=on&op=index&search=0x3 6673F56 4 Created: 2011-1-30 18:36:08 +0000 5 Fingerprin t: dc1a2679fc 6a938d6681 a61389a2af d036673f56 6 Algorithm: RSA_GENERA L 7 User ID: Ingo Thierack <ingothiera ck@googlemail .com> 8 Signed By: Key 0x36673F56 - not locally trusted 9 Subkey ID: 0x1A2EDAED [RSA_GENERA L]
このKeyを信頼してダウンロードを可能にするために、下記コマンドを実行します。
1 com.example roo> pgp trust --keyId 0x36673F56 2 Added trust for key: 3 >>>> KEY ID: 0x36673F56 <<<< 4 More Info: http://key server.ubu ntu.com/pk s/lookup?fingerprin t=on&op=index&search=0x3 6673F56 5 Created: 2011-1-30 18:36:08 +0000 6 Fingerprin t: dc1a2679fc 6a938d6681 a61389a2af d036673f56 7 Algorithm: RSA_GENERA L 8 User ID: Ingo Thierack <ingothiera ck@googlemail .com> 9 Signed By: Key 0x36673F56 (Ingo Thierack <ingothiera ck@googlemail .com>) 10 Subkey ID: 0x1A2EDAED [RSA_GENERA L]
そして再度インストールコマンドを実行します。
1 com.example roo> addon install id --searchRe sultId 01 2 Target resource(s): 3 ---------- --------- 4 spring-roo -postgres- jdbc4-wrap per (9.0.0.801_ jdbc4_0001 ) 5 6 Deploying. ..done. 7 8 Successful ly installed add-on: spring-roo -postgres- jdbc4-wrap per [version: 9.0.0.801_ jdbc4_0001 ] 9 [Hint] Please consider rating this add-on with the following command: 10 [Hint] addon feedback bundle --bundleSy mbolicName org.postgr esql.roo.w rapper.pos tgresql --rating ... --comment "..."
無事にインストールできました。次にDBREアドオンのdatabase introspect
1 com.example roo> database introspect --schema public --file --enableVi ews
出力内容は割愛しますが、XML形式でスキーマの情報が表示されます。
そして実際にテーブル情報からEntityを作成するためにdatabase reverse engineerコマンドを実行します。
1 com.example roo> database reverse engineer --schema public --package ~.domain --testAuto matically 2 Created SRC_MAIN_R ESOURCES\dbre.xml 3 Updated ROOT\pom.xml 4 Updated SRC_MAIN_R ESOURCES\META-INF\persistence .xml 5 Created SRC_MAIN_J AVA\com\example\domain 6 Created SRC_MAIN_J AVA\com\example\domain\Access.java 7 Created SRC_MAIN_J AVA\com\example\domain\Content.jav a 8 Created SRC_TEST_J AVA\com\example\domain 9 Created SRC_TEST_J AVA\com\example\domain\AccessDataO nDemand.ja va 10 Created SRC_TEST_J AVA\com\example\domain\AccessInteg rationTest .java 11 Created SRC_TEST_J AVA\com\example\domain\ContentData OnDemand.j ava 12 Created SRC_TEST_J AVA\com\example\domain\ContentInte grationTes t.java 13 Created SRC_MAIN_J AVA\com\example\domain\Access_Roo_ Configurab le.aj 14 Created SRC_MAIN_J AVA\com\example\domain\Access_Roo_ Entity.aj 15 Created SRC_MAIN_J AVA\com\example\domain\Access_Roo_ DbManaged. aj 16 Created SRC_MAIN_J AVA\com\example\domain\Access_Roo_ ToString.a j 17 Created SRC_MAIN_J AVA\com\example\domain\Content_Roo _Configura ble.aj 18 Created SRC_MAIN_J AVA\com\example\domain\Content_Roo _Entity.aj 19 Created SRC_MAIN_J AVA\com\example\domain\Content_Roo _DbManaged .aj 20 Created SRC_MAIN_J AVA\com\example\domain\Content_Roo _ToString. aj 21 Created SRC_TEST_J AVA\com\example\domain\AccessDataO nDemand_Ro o_Configur able.aj 22 Created SRC_TEST_J AVA\com\example\domain\ContentData OnDemand_R oo_DataOnD emand.aj 23 Created SRC_TEST_J AVA\com\example\domain\AccessDataO nDemand_Ro o_DataOnDe mand.aj 24 Created SRC_TEST_J AVA\com\example\domain\ContentInte grationTes t_Roo_Conf igurable.a j 25 Created SRC_TEST_J AVA\com\example\domain\ContentInte grationTes t_Roo_Inte grationTes t.aj 26 Created SRC_TEST_J AVA\com\example\domain\ContentData OnDemand_R oo_Configu rable.aj 27 Created SRC_TEST_J AVA\com\example\domain\AccessInteg rationTest _Roo_Confi gurable.aj 28 Created SRC_TEST_J AVA\com\example\domain\AccessInteg rationTest _Roo_Integ rationTest .aj
--schemaオプションで対象のDBスキーマを、--packageオプションでEntityを作成するパッケージを指定します。--testAuto
また、--excludeT
これ以降の手順は、roo shellからEntityを作成したあとと同じ手順でWebアプリケーションのセットアップなどを行うことが出来ます。