S2JDBC-Gen に挑戦!

去年のSeasar2のカンファレンスでSAStrutsS2JDBCのセッションに参加していましたが、その時はなるほど、という感じでしか見ていませんでした。
実際に使ってみると、すごい。これだけのクラス(EntityとServriceとTest等)を自動生成してくれると、あとが非常に楽になります。

ん?

何かが違うなぁ?

テーブル名はこれです(Oracle Express Edition使用)。

CREATE TABLE "ORDER_VOUCHER"
( "ID" NUMBER(18,0) NOT NULL ENABLE,
"ACCOUNT_ID" VARCHAR2(10),
)

データベースビューでもEntityが作成できるのですね。
これで作成すると、

@Entity
@Table(name="ORDER_VOUCHER")
public class OrderVoucher {

@Id
@GeneratedValue
private Long id;
@Column(name = "ACCOUNT_ID")
private String accountId;
}

このようになり、これはテーブルとクラス名が一致しないので、アノテーションでサポートしているので、正しいでしょうね。

S2JDBC-Genで作成すると、

/**
* OrderVoucherエンティティクラス
*
* @author S2JDBC-Gen
*/
@Entity
public class OrderVoucher {

/** idプロパティ */
@Id
@Column(precision = 18, nullable = false, unique = true)
public Long id;

/** accountIdプロパティ */
@Column(length = 10, nullable = true, unique = false)
public String accountId;
}

確かにカラムの長さやNull許可の設定が自動で生成されるのはすごいです。
しかし、Entityの時のように、「_」が入っているパターンは大丈夫なのでしょうかね?
まずは、考えるよりは動かして、問題ないか、ですね。両方をドッキングすると、上手くいくような気がしますが。。。