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

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


本間@茅場町です。

on Fri, 24 Nov 2006 14:17:53 +0900
in [seasar-s2dao-dev:45] Re: 更新したプロパティのみをUPDATE文に含める
YOKOTA Takehiko <yokota @ arksystems.co.jp> wrote:

> > Emp emp = new Emp();
> > emp.setJob("MANAGER");
> > empDao.updateModifiedOnly(emp);
> > 
> > できれば、ReadModifyじゃない方がうれしいかなと思いますが
> > (排他はTimestampやVersionNoがあるし)
> > これだと、ASPECTがかけられないんですよね・・・
> 
> 同感です。newしたやつも、setterが呼ばれたのだけUPDATE対象にしたい
> ですね。

そうですね、これができると嬉しいのですが、問題は

- どう実現するか?
  newしているのでランタイムのAspectは仕掛けられない。(コンパ
  イルタイムのAspectならできるかも。)
  また、DBFluteのようなコード生成アプローチでも可能。
  もしくは、Entityを生成する機構をS2Dao側で提供するとか...

という点でしょうか。

newして更新する場合はupdateUnlessNullを、SELECT結果を更新す
る場合はupdateModifiedOnlyを、とDaoのメソッドを呼び分ければ
可能なのでしょうけれど、煩雑になりそうですし。。。
それに、そのEntityがnewされたものなのかSelectされたものなの
か、Daoを呼ぶクラスが知っていないとできませんし。

良い案あります??

(良い案が無ければ後回しということで)

---
本間 宏崇 /** Hirotaka HONMA */
manhole @ arksystems.co.jp
ARK Systems Co., Ltd. : 株式会社アークシステム
http://www.arksystems.co.jp/



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