DoltengでSAStruts+Mayaa+S2JDBCのScaffold生成を試すの巻 その2
DoltengでSAStruts+Mayaa+S2JDBCのScaffold生成を試すの巻 その1
のつづき
- JDBCドライバの設定
- WEB-INF/lib/にpostgresql-8.3-603.jdbc3.jarを配置
- ビルドパスに設定
- Jiemamyでテーブル定義作成(おまけw)
- M_USERテーブルを作成
- カラムはUSER_ID(Integer as PK)とUSER_NAME(varchar)など適当に。
- ID用にシーケンスも作っとく。
- jdbc.diconの設定
- src/main/resources/jdbc.diconに以下のとおり設定。
- デフォルトはH2が設定されてるのでコメントアウト
- PostgreSQL用の設定箇所のコメントをはずして以下を設定
- URL:jdbc:postgresql://localhost/postgres
- user:postgres
- password:postgres
- s2jdbc.diconの設定
- src/main/resources/s2jdbc.diconに以下のとおり設定。
- dialectプロパティにデフォルトで「h2Dialect」が設定されてるので「postgreDialect」に変更
- データベースからエンティティの生成
- src/main/resources に META-INF/servicesディレクトリを作成
- javax.xml.parsers.SAXParserFactory というテキストファイルを作成
- 内容に 「com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl」 と書いて保存
- ルート直下のs2jdbc-gen-build.xmlのget-entryターゲットをant実行
- しかし、[gen-test]がエラーとなりビルドが失敗する。
[gen-test] INFO 2008-11-19 13:43:39,082 [main] Running on [ENV]ut, [DEPLOY MODE]Warm Deploy [gen-test] Java Result: 1 BUILD FAILED C:\eclipse\workspace\mayaa_sample\s2jdbc-gen-build.xml:48: Exception in thread "main" org.seasar.extension.jdbc.gen.exception.CommandFailedRuntimeException: [ES2JDBCGen0005]コマンド(org.seasar.extension.jdbc.gen.internal.command.GenerateTestCommand)の実行に失敗しました。理由はorg.seasar.extension.jdbc.gen.internal.exception.EntityClassNotFoundRuntimeException: [ES2JDBCGen0014]対象となるエンティティクラスが1つも見つかりませんでした。クラスパスのディレクトリ(C:\eclipse\workspace\mayaa_sample\src\main\webapp\WEB-INF\classes)、パッケージ名(com.example.mayaa_sample.entity)、読み取り対象のエンティティ名のパターン(.*)、読み取り非対象のエンティティ名のパターン()が正しいか確認してください。 at org.seasar.extension.jdbc.gen.internal.command.AbstractCommand.execute(AbstractCommand.java:160) at org.seasar.extension.jdbc.gen.internal.command.CommandInvokerImpl.invoke(CommandInvokerImpl.java:29) at org.seasar.extension.jdbc.gen.command.CommandAdapter.main(CommandAdapter.java:61) Caused by: org.seasar.extension.jdbc.gen.internal.exception.EntityClassNotFoundRuntimeException: [ES2JDBCGen0014]対象となるエンティティクラスが1つも見つかりませんでした。クラスパスのディレクトリ(C:\eclipse\workspace\mayaa_sample\src\main\webapp\WEB-INF\classes)、パッケージ名(com.example.mayaa_sample.entity)、読み取り対象のエンティティ名のパターン(.*)、読み取り非対象のエンティティ名のパターン()が正しいか確認してください。 at org.seasar.extension.jdbc.gen.internal.meta.EntityMetaReaderImpl.read(EntityMetaReaderImpl.java:118) at org.seasar.extension.jdbc.gen.internal.command.GenerateTestCommand.doExecute(GenerateTestCommand.java:344) at org.seasar.extension.jdbc.gen.internal.command.AbstractCommand.execute(AbstractCommand.java:158) ... 2 more Total time: 4 seconds
-
- とりあえず適当にもう一つ別のテーブル(M_INFO)を作って再実行したら、エラーにならずに以下のソースが生成された。時間があったら調べてみるとしてそのまま続ける。
- com.example.mayaa_sample.condition.MUserCondition.java
- com.example.mayaa_sample.entity.MInfo.java
- com.example.mayaa_sample.entity.MUser.java
- com.example.mayaa_sample.entity.MUserNames.java
- com.example.mayaa_sample.service.AbstractService.java
- com.example.mayaa_sample.service.MUserService.java
- com.example.mayaa_sample.entity.MUser.java
- com.example.mayaa_sample.entity.MUserTest.java
- とりあえず適当にもう一つ別のテーブル(M_INFO)を作って再実行したら、エラーにならずに以下のソースが生成された。時間があったら調べてみるとしてそのまま続ける。
- DatavaseViewにてテーブルを選択してScaffold生成
- 自動生成されたアプリの動作確認
- Tomcatを再起動
- ブラウザでhttp://localhost:8080/mayaa_sample/MUser/にアクセス
- 「Page not found, /MUser/list.html」って出ちゃうので、web.xmlに以下の設定を追加して再確認
<context-param> <param-name>sastruts.VIEW_PREFIX</param-name> <param-value>/view</param-value> </context-param>
-
- M_USERテーブルのデータがリスト表示されることを確認
- 新規登録、更新、削除、参照も動作することを確認
以上。postgre経験もあまりなかったのでいろいろ調べながらの作業でしたが、だいたい半日ぐらいでここまで出来ました。あくまでScaffoldなのでサンプルアプリと呼べるほどではないけど、これを土台にして実装すれば開発コストは大分減らせそうです(ただし、案件によると思いますが)。あと、未経験のF/Wでも早い段階で動作しているものが確認できるのでF/Wの理解も早いのではと思います。
参考> http://www.atmarkit.co.jp/fjava/rensai4/saweb01/saweb01_1.html