S2JDBC/S2JDBC-Gen

S2JDBC/S2JDBC-Gen

S2JDBC-Genを使った開発サイクル

  • エンティティ作成 or 修正
  • DDL+名前集合の生成
  • DDLの実行(migration)

以上の動作をグルグル回す。 あくまでソースコードの修正の起点はエンティティ。

これを無理やりDB起点にしようとする運用をやろうとするとS2JDBCの機能がかなりスポイルされるのでやめたほうがよい。 適材適所。

Ant で実行する

このようにしてターゲット指定で実行する

$ ant -f s2jdbc-gen-build.xml hogehoge

名前集合を作りたいならこうなる

$ ant -f s2jdbc-gen-build.xml gen-names

吐き出すDDLに外部キー制約を付けない

<gen-ddl
    classpathdir="${classpathdir}"
    rootpackagename="${rootpackagename}"
    entitypackagename="${entitypackagename}"
    env="${env}"
    jdbcmanagername="${jdbcmanagername}"
    classpathref="classpath"
    autogenerateforeignkey="false">
</gen-ddl>

↑のように

autogenerateforeignkey="false"

外部キーの自動生成をオフる。

既存のデータをダンプしない

<gen-ddl
    classpathdir="${classpathdir}"
    rootpackagename="${rootpackagename}"
    entitypackagename="${entitypackagename}"
    env="${env}"
    jdbcmanagername="${jdbcmanagername}"
    classpathref="classpath"
    autogenerateforeignkey="false"
    dump="false">
</gen-ddl>
dump="false"

をつけると既存のDBに入っているデータを取り出さない

生成するテストのテンプレートをS2Junit4対応にする

うえのほうで共通的にに設定してる部分をこのようにする

<property name="uses2junit4" value="true"/>

ま、そもそもテストは自動生成に頼らず自分で作ったほうがよい。

生成されるカラムやテーブルの名前を小文字にする

<gen-ddl
    ...
    sqlIdentifierCase="lowercase"
    ...
/>

生成するCREATE TABLE に文字コード指定の記述を追加する

<gen-ddl
    ...
    tableOption="CHARACTER SET utf8"
    ...
/>

日本語使うならUTF8にしておくのは必須であろう。 これをせずに migrate とかやった場合に日本語データを突っ込もうとしたらエラーが出たりする。

タグ

s2/s2jdbc/s2jdbc_gen.txt · 最終更新: 2017-09-26 19:17 by ore