About

ドキュメント

Javadoc

モジュール

プロジェクト文書

Built by Maven

タスクの一覧

S2JDBC-Genでは以下のタスクを提供します。

コアタスク

タスク名 説明
Gen-Entity データベースのテーブルからエンティティクラスのJavaコードを生成するタスクです。
Gen-Ddl エンティティクラスからバージョン管理されたDDLを生成するタスクです。
Migrate バージョン管理されたDDLを使いデータベーススキーマのマイグレーションを実行するタスクです。

オプションタスク

タスク名 説明
Gen-Test エンティティクラスからテストクラスのJavaコードを生成するタスクです。テストクラスではエンティティを使って実際にデータベースアクセスを行います。
Gen-Condition エンティティクラスから条件クラスのJavaコードを生成するタスクです。条件クラスを使用すると、S2JDBCを使った問い合わせをタイプセーフにすることができます。
Gen-Names エンティティクラスから名前インタフェースのJavaコードを生成するクラスです。名前インタフェースはエンティティのプロパティ名を定数としてもつインタフェースです。この定数を使用することで、結合先のプロパティや検索条件のプロパティをタイプセーフで指定できます。
Gen-Service エンティティクラスからサービスクラスのJavaコードを生成するクラスです。サービスクラスはエンティティの問い合わせを簡略化するメソッドを提供します。

ユーティリティタスク

タスク名 説明
Dump-Db-Meta テーブルやカラムのメタデータをダンプするタスクです。主にS2JDBC-Genの開発者が利用することを想定しています。
Dump-Data データベースのデータをCSV形式でダンプするタスクです。ダンプの機能はGen-Ddlタスクに含まれていますが、Gen-Ddlタスクとは別にダンプを行いたい場合に使用できます。
Load-Data CSV形式のダンプファイルをロードするタスクです。ロードの機能はMigrateタスクに含まれていますが、Migrateタスクとは別にロードを行いたい場合に使用できます。
Exe-Sql SQLファイルに含まれた任意のSQLを実行するタスクです。

タスクの使用例

タスクは組み合わせて使用します。 以下の例では、タスクを組み合わせ3つのターゲットを定義しています。

<project name="example-s2jdbc-gen" default="gen-ddl" basedir=".">

  <property name="classpathdir" value="src/main/webapp/WEB-INF/classes"/>
  <property name="rootpackagename" value="example"/>
  <property name="entitypackagename" value="entity"/>
  <property name="javafiledestdir" value="src/main/java"/>
  <property name="testjavafiledestdir" value="src/test/java"/>
  <property name="javafileencoding" value="UTF-8"/>
  <property name="env" value="ut"/>
  <property name="applyenvtoversion" value="false"/>
  <property name="jdbcmanagername" value="jdbcManager"/>
  <property name="version" value="latest"/>

  <path id="classpath">
    <pathelement location="${classpathdir}"/>
    <fileset dir="src/main/webapp/WEB-INF/lib"/>
    <fileset dir="lib"/>
  </path>

  <taskdef resource="s2jdbc-gen-task.properties" classpathref="classpath"/>

  <target name="gen-entity">
    <gen-entity
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath"
    />
    <javac
      srcdir="${javafiledestdir}"
      destdir="${classpathdir}"
      encoding="${javafileencoding}"
      fork="true"
      debug="on"
      classpathref="classpath">
      <include name="${rootpackagename}/${entitypackagename}/**"/>
    </javac>
    <gen-test
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${testjavafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath"
    />
    <gen-names
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath"
    />
    <gen-service
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath"
    />
  </target>

  <target name="gen-ddl">
    <gen-ddl
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath"
    />
    <gen-test
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${testjavafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath"
    />
    <gen-names
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath"
    />
    <gen-service
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath"
    />
  </target>

  <target name="migrate">
    <migrate
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      version="${version}"
      env="${env}"
      applyenvtoversion="${applyenvtoversion}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath"
    />
  </target>

</project>

各ターゲットの役割は次のとおりです。

  • gen-entityは、データベースからエンティティクラスを生成し、エンティティクラスに関連する便利クラスも生成します。
  • gen-ddlはDDLを生成します。DDLの生成前にはエンティティクラスを修正しているはずなので、エンティティクラスに依存する便利クラスも同時に生成しなおします。
  • migrateはデータベーススキーマのマイグレーションを行います。

このビルドファイルは、実践で使われることを想定したターゲット定義を記述しています。 カスタマイズして使用すると良いでしょう。