DoltengでSAStruts+Mayaa+S2JDBCのScaffold生成を試すの巻 その2

DoltengでSAStruts+Mayaa+S2JDBCのScaffold生成を試すの巻 その1
のつづき

  1. JDBCドライバの設定
    • WEB-INF/lib/にpostgresql-8.3-603.jdbc3.jarを配置
    • ビルドパスに設定
  2. Jiemamyでテーブル定義作成(おまけw)
    • M_USERテーブルを作成
    • カラムはUSER_ID(Integer as PK)とUSER_NAME(varchar)など適当に。
    • ID用にシーケンスも作っとく。
  3. jdbc.diconの設定
  4. s2jdbc.diconの設定
    • src/main/resources/s2jdbc.diconに以下のとおり設定。
    • dialectプロパティにデフォルトで「h2Dialect」が設定されてるので「postgreDialect」に変更
  5. データベースからエンティティの生成
 [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
  1. DatavaseViewにてテーブルを選択してScaffold生成
    • 以下のjavaソースが生成される。
      • com.example.mayaa_sample.action.MUserAction.java
      • com.example.mayaa_sample.form.MUserForm.java
    • webapp/view/MUser/以下にhtml、mayaaソースが生成される。
  2. 自動生成されたアプリの動作確認
    <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