About

ドキュメント

Javadoc

モジュール

プロジェクト文書

Built by Maven

タスクの一覧

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

コアタスク

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

オプションタスク

タスク名 説明
Gen-Names エンティティクラスから名前クラス(Namesクラス)のJavaコードを生成するクラスです。名前クラスはエンティティのプロパティ名に対応するメソッドをもつクラスです。JdbcManagerを使った問い合わせで名前クラスを使用することで、結合条件や検索条件をタイプセーフに指定できます。
Gen-Service エンティティクラスからサービスクラス(Serviceクラス)のJavaコードを生成するクラスです。サービスクラスはエンティティの問い合わせを簡略化するメソッドを提供します。
Gen-Condition エンティティクラスから条件クラス(Conditionクラス)のJavaコードを生成するタスクです。条件クラスを使用すると、S2JDBCを使った検索条件をタイプセーフに指定できます。条件クラスよりも名前クラスを使用することを推奨します。
Gen-SqlFileConstants SQLファイルの定数クラスのJavaコードを生成するクラスです。定数クラスでは、SQLファイルのパスを定数フィールドとして持ちます。
Gen-EntityTest エンティティクラスのテスト用Javaコードを生成するタスクです。テストクラスではエンティティを使って実際にデータベースアクセスを行います。
Gen-ServiceTest サービスクラスのテスト用Javaコードを生成するクラスです。
Gen-SqlFileTest SQLファイルのテスト用Javaコードを生成するクラスです。テストクラスではSQLファイルを使って実際にデータベースアクセスを行います。

ユーティリティタスク

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

タスクの使用例

タスクは組み合わせて使用します。

以下の定義は、S2JDBC-Genの配布ファイルで提供しているサンプル用ビルドファイル(resources/s2jdbc-gen-build.xml)の内容です。 タスクを組み合わせ5つのターゲットを定義しています。

<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="entityfilepattern" value="example/entity/**/*.java"/>
  <property name="javafiledestdir" value="src/main/java"/>
  <property name="testjavafiledestdir" value="src/test/java"/>
  <property name="javafileencoding" value="UTF-8"/>
  <property name="version" value="latest"/>
  <property name="sqlfilepattern" value="META-INF/sql/**/*.sql"/>
  <property name="applyenvtoversion" value="false"/>
  <property name="uses2junit4" value="false"/>
  <property name="env" value="ut"/>
  <property name="jdbcmanagername" value="jdbcManager"/>
  <condition property="vmarg.encoding" value="-Dfile.encoding=UTF-8" else="">
    <isset property="eclipse.pdebuild.home"/>
  </condition>

  <path id="classpath">
    <pathelement location="${classpathdir}"/>
    <fileset dir="src/main/webapp/WEB-INF/lib">
      <exclude name="src/main/webapp/WEB-INF/lib/sources/**"/>
    </fileset>
    <fileset dir="lib">
      <exclude name="lib/sources/**"/>
    </fileset>
  </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">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-entity>
    <javac 
      srcdir="${javafiledestdir}"
      destdir="${classpathdir}"
      encoding="${javafileencoding}"
      fork="true"
      debug="on"
      classpathref="classpath">
        <include name="${entityfilepattern}"/>
    </javac>
    <gen-names
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-names>
    <gen-service
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-service>
    <gen-sqlfileconstants
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <sqlfileset dir="${classpathdir}">
          <include name="${sqlfilepattern}" />
        </sqlfileset>
        <jvmarg value="${vmarg.encoding}"/>
    </gen-sqlfileconstants>
    <gen-entitytest
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${testjavafiledestdir}"
      javafileencoding="${javafileencoding}"
      uses2junit4="${uses2junit4}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-entitytest>
    <gen-servicetest
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      javafiledestdir="${testjavafiledestdir}"
      javafileencoding="${javafileencoding}"
      uses2junit4="${uses2junit4}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-servicetest>
    <gen-sqlfiletest
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      javafiledestdir="${testjavafiledestdir}"
      javafileencoding="${javafileencoding}"
      uses2junit4="${uses2junit4}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <sqlfileset dir="${classpathdir}">
          <include name="${sqlfilepattern}" />
        </sqlfileset>
        <jvmarg value="${vmarg.encoding}"/>
    </gen-sqlfiletest>
  </target>

  <target name="gen-ddl">
    <gen-ddl
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-ddl>
    <gen-names
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-names>
    <gen-service
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-service>
    <gen-sqlfileconstants
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      javafiledestdir="${javafiledestdir}"
      javafileencoding="${javafileencoding}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <sqlfileset dir="${classpathdir}">
          <include name="${sqlfilepattern}" />
        </sqlfileset>
        <jvmarg value="${vmarg.encoding}"/>
    </gen-sqlfileconstants>
    <gen-entitytest
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      javafiledestdir="${testjavafiledestdir}"
      javafileencoding="${javafileencoding}"
      uses2junit4="${uses2junit4}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-entitytest>
    <gen-servicetest
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      javafiledestdir="${testjavafiledestdir}"
      javafileencoding="${javafileencoding}"
      uses2junit4="${uses2junit4}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </gen-servicetest>
    <gen-sqlfiletest
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      javafiledestdir="${testjavafiledestdir}"
      javafileencoding="${javafileencoding}"
      uses2junit4="${uses2junit4}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <sqlfileset dir="${classpathdir}">
          <include name="${sqlfilepattern}" />
        </sqlfileset>
        <jvmarg value="${vmarg.encoding}"/>
    </gen-sqlfiletest>
  </target>

  <target name="migrate">
    <migrate
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      applyenvtoversion="${applyenvtoversion}"
      version="${version}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </migrate>
    <refresh projectName="${projectname}"/>
  </target>

  <target name="rollback">
    <migrate
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      entitypackagename="${entitypackagename}"
      applyenvtoversion="${applyenvtoversion}"
      version="previous"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </migrate>
  </target>

  <target name="dump">
    <dump-data
      classpathdir="${classpathdir}"
      rootpackagename="${rootpackagename}"
      applyenvtoversion="${applyenvtoversion}"
      entitypackagename="${entitypackagename}"
      env="${env}"
      jdbcmanagername="${jdbcmanagername}"
      classpathref="classpath">
        <jvmarg value="${vmarg.encoding}"/>
    </dump-data>
  </target>

</project>

各ターゲットの役割を説明します。

ターゲット名 説明
gen-entity データベースからエンティティクラスを生成し、エンティティクラスから名前クラス、サービスクラス、各種テストクラスのコードを生成します。このターゲットは、データベーススキーマがすでに存在する場合に、最初の一度だけ実行されることを想定しています。
gen-ddl エンティティクラスからDDLを生成します。また、名前クラス、サービスクラス、各種テストクラスのコードを再生成します(既存のものを上書きする/しないは各タスクによって決まります)。このターゲットは、データベースリファクタリング(エンティティの修正)を行うたびに実行されることを想定しています。エンティティを新規に作成する場合も、このターゲットを使用します。
migrate gen-ddlターゲットで生成したDDLを使用し、データベーススキーマのマイグレーションを実行します。デフォルトでは、最新のDDLを使ったマイグレーションを行います。
rollback データベーススキーマのバージョンを1つ前に戻します。
dump データベースのデータをCSV形式でダンプします。通常、ダンプはgen-ddlターゲットで行われますが、個別にダンプを実行したい場合にこのターゲットを使用します。デフォルトでは、ダンプファイルは最新バージョンのデータを管理するディレクトリに出力されます。migrateターゲットを実行することでロードできます。

このビルドファイルを使用するにあたっては、propertyやpathの値を環境に合わせてカスタマイズし利用してください。

gen-entityターゲットでは、エンティティクラスのJavaファイルのみをコンパイルしています。 生成されたJavaファイルすべてをコンパイルするには、EclipseのようなIDEで行うか、ビルドファイルをカスタマイズして別途Javacタスクで実行してください。

Doltengを使用する 場合は、このビルドファイルと同等のビルドファイルを自動生成できるので、そちらを利用してください。 Doltengが環境に応じたビルドファイルを生成するため、propertyやpathの値を修正する必要がありません。