ひがやすを技術ブログ

電通国際情報サービスのプログラマ

更新SQLの自動生成

S2Daoのうりの1つは、2Way SQLですが、更新のSQLについては、
Beanの定義から自動生成しようと思ってます。
デフォルトだとBeanのクラス名をテーブル名、
プロパティ名をカラム名とみなします。
プライマリーキーの情報は、JDBCメタデータより取得します。
テーブルに存在しないプロパティは無視されます。
例えば、Empクラスにdnameプロパティがあったとしても無視されます。
クラス名がテーブル名と異なる場合はどうするのか。
XML、AttributeCompiler、XDocletを使うのは面倒です。
そこで登場するのが、fieldメタデータ
クラスに


private static final String TABLE = "emp";
と定義しておくだけです。
同様にemployeeNoプロパティのカラム名がempnoの場合は、

private static final String EMPLOYEENO_COLUMN = "empno";
のように定義します。
排他制御としては、VersionNoパターンをサポートします。
versionNoという名前のプロパティを定義しておけば、
VersionNoによる排他制御と更新時のカウントアップを自動的に行います。
あとは、S2Dao#insert(Object),update(Object),delete(Object)
の引数にBeanを渡すだけです。