2009-01-03
S2JDBCは複数スキーマ対応
Java |
今抱えている案件では、スキーマーが複数ありますので、大丈夫かなぁ、と思っていましたが、本家のサイトにしっかり追加する方法があります。メモメモ。。。
2つのスキーマーを想定し、S2JDBC-Genで一気に出力!
あら?
1つしかできないなぁ。。。
jdbc.dicon
<components namespace="jdbc">
<include path="jdbc-print.dicon"/>
<include path="jdbc-screen.dicon"/>
</components>
s2jdbc.dicon
<components>
<include path="s2jdbc-print.dicon"/>
<include path="s2jdbc-screen.dicon"/>
</components>
定義はこのように書いています。どうも、最初に書いたDiconファイルの中身のみ実行されるみたいです。
順序を変えてみると、もう1つのEntity/Service/Testクラスが出力。
本家のサイトを見ると、「tableNamePattern」をうまく使うと、いけそうな感じがします。まぁ、5つ以上のスキーマーを対応するわけではないので、順序を変えて実行できるのであれば、これはこれでOKです。もしかすると、今はOracleのExpress Editionを使っているので、起きている問題かもしれないですし、OracleとPostgresで実行すると、上手くいくかもしれないですし。これは今日の宿題にしましょう。
S2JDBC-Gen に挑戦!
Java |
去年のSeasar2のカンファレンスでSAStrutsとS2JDBCのセッションに参加していましたが、その時はなるほど、という感じでしか見ていませんでした。
実際に使ってみると、すごい。これだけのクラス(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の時のように、「_」が入っているパターンは大丈夫なのでしょうかね?
まずは、考えるよりは動かして、問題ないか、ですね。両方をドッキングすると、上手くいくような気がしますが。。。
SAStrutsしかないですね
Java |
昨日、電車の中で調べましたが、やはりSAStrutsははずせないですね。
時間との戦い、私以外の人が保守を担当、という事が既に明確になっていますので、
・誰にでもわかりやすいこと=学習コストが低いこと
・ユースケース単位での追加機能が容易にでき、他のクラスにも影響を与えないこと=最初のフェーズですので、今後追加機能がある事は明確で、追加しやすい・既存の機能に影響を与えないこと
この条件を満たすとなると、SAStrutsです。
ネットで色々と探しました所、書籍が2月上旬に発売される予定ですし、、
@ITにも連載がありますし、HPを見てみると意外と情報がたくさんあります。
http://code.nanigac.com/source/wiki/view/597
ここのサイトが一番分かりやすいです。メモメモ(本家のサイト以外で)。。。
HTML - Mayaa - SAStruts - S2JDBC
このどちらかでいきます。もちろん前者で行きたいですが(モック+Spryで作成したJavaScript付)、
S2JDBC-Genは、「_」を除去してエンティティ名やプロパティ名を出力しますが、発行されるSQLには「_」が補われるので大丈夫です。
S2JDBC-Genでの複数スキーマ対応、できました。エントリーに詳細を書きます。
データベースビュー→S2DAOを使用する時、S2JDBC-Gen→S2JDBCを使用する時、になると思いますので、S2DAO・S2JDBCを使用する時には対応するツールを使わないといけないですね。