アノテーションの書き方

public static Object[] DELETEFLAG = {
    "tstamp", DeleteFlagValue.TIMESTAMP, DeleteFlagValue.TIMESTAMP
};

基本的には1つ目の値で指定したプロパティの型に代入できるものしか指定できない。2つ目の値は論理削除する時に挿入される値。3つ目の値は更新処理をする際に挿入する値。nullにすればnullが挿入されるし、new Date()と書けばDate型で入る。特殊なのが2つあってDeleteFlagValue.TIMESTAMPがnew Date()の代わり。将来的にDBから日付を持ってこれるように定数を用意しておいた。今は内部的にnew Date()をやってるだけ。もうひとつは DeleteFlagValue.NOUPDATE。これはDaoの引数で指定されたbeanの値を上書きしないという指定。NOUPDATEになっていれば、引数で渡されたbeanの値がそのまま使われる。アノテーションじゃなくてプログラム側で自由な値を設定したい場合に使う。定義する値を直接使わないなら明示的に定義しなくてもいいとも思ったけど…とりあえず動いてるからこのままで。TIMESTAMPはオマケ。DBから取ってくる実装は今の所作る予定無し。この仕様はON, OFFどっちの値でも指定できる。

アノテーションの引数が2つしか無い場合、更新時にデフォルトの値は代入されません。明示的にデフォルトの値を代入しないようにするには、DeleteFlagValue.NOUPDATEを指定してください。

この1文をドキュメントに入れるだけですむと思った。あとで引数は必ず3つという制約をはずしておこう。すごい気の変わりようだな(^^;