新しいテーブルの作成

S2JDBC-Genで、たまに勘違いされてしまうのは、新しいテーブルを作成するときです。


まちがい

  1. CREATE TABLE文を作成する
  2. CREATE TABLE文を実行しテーブルをDB上に作成する
  3. AntでGen-Entityを実行しテーブルに対応するエンティティクラスを作成する


テーブルを作ってから対応するクラスを作成するという一見よくある手順ですが、S2JDBC-Genを使う場合は、これはまちがい(推奨しない方法)です。ただしくは次のようにします。


ただしい

  1. エンティティクラスを作成する
  2. AntでGen-Ddlを実行しエンティティクラスに対応するCREATE TABLE文を作成する
  3. AntでMigrateを実行しCREATE TABLE文をDBに反映させる

先にエンティティクラスを作成するという点が超重要です。例をみてみましょう。

まずエンティティクラスを作ります。

@Entity
public class Person {
  @Id
  public Integer id;
  @Column(length = 20, nullable = false, unique = false)
  public String name;
}

Gen-Ddlを実行します。すると次のようなCREATE TABLE文が作成されます。

create table PERSON (
    ID integer not null,
    NAME varchar(20) not null,
    constraint PERSON_PK primary key(ID)
);

Migrateを実行します。上記のCREATE TABLE文がDBに反映されます。


どういうエンティティ定義がどういうDDLに変換されるかはドキュメントを見てください。慣れるとDDLを直接書くよりエンティティを書く方が楽なんじゃないかなぁと思います。
http://s2container.seasar.org/2.4/ja/s2jdbc_gen/entity_definition.html