[seasar-s2dao-dev:40] 更新したプロパティのみをUPDATE文に含める

Hirotaka HONMA manhole @ arksystems.co.jp
2006年 11月 24日 (金) 09:25:11 JST


ほんまです。

更新したいカラムのみをUPDATE文に含める機能としてUnlessNullが
ありますが、
  1. SELECTしてEntityを取得
  2. Entityの1プロパティを更新
  3. UPDATE
という操作をすると、結局全カラムがUPDATE文に含まれてしまいま
す。更新したくないプロパティへnullをセットすればUnlessNullが
機能するのですが、nullをセットするのがちょっと煩雑だと思いま
した。

というわけで、UPDATE文に更新プロパティのみを含める機能を提
案します。

と言いつつ実は手元では動いています。(コードは汚いですが...)
EntityのsetterへAspectを仕掛けて更新したプロパティを記録する
ことで、機能を実現しています。

例えば次の操作を行うと、

  final Emp emp = empDao.findById(7499);
  emp.setJob("MANAGER");
  empDao.updateModifiedOnly(emp);

次のようなUPDATE文が発行されます。

  UPDATE EMP SET
      tstamp = '2006-11-24 09.18.29'
     ,job = 'MANAGER'
    WHERE empno = 7499
      AND tstamp = '2000-01-01 00.00.00'

どうでしょうか? よろしくお願いします。


seasar-s2dao-dev メーリングリストの案内