[DAO-121] ModifiedOnly機能をNullBeanEnhancerが設定されているときでも利用できるようにする([seasar-s2dao-dev:496]) Created: 2007-09-13  Updated: 2007-09-14  Resolved: 2007-09-14

Status: Resolved
Project: S2Dao
Component/s: s2dao
Affects Version/s: None
Fix Version/s: 1.0.47-RC1

Type: Improvement Priority: Major
Reporter: jundu Assignee: jundu
Resolution: Fixed Votes: 0
Labels: None


 Description   

BeanEnhancerImplの位置付けをgetModifiedPropertyNamesメソッドの実装を楽にするためという位置付けに変更し、NullBeanEnhancerが設定されているときでも、自分でgetModifiedPropertyNamesメソッドが実装されていればModifiedOnly機能が利用できるように変更する。



 Comments   
Comment by jflute [ 2007-09-14 ]

DBFluteで作ったgetModifiedPropertyNames付きEntityではありますが、
BeanEnhancerImpl / NullBeanEnhancer ともに ModifiedOnlyが動いたことを
確認しましたー!

Comment by jundu [ 2007-09-14 ]

対応しました。

Comment by jundu [ 2007-09-13 ]

NullBeanEnhancerの場合、ModifiedOnlyが付いた更新メソッド以外ではgetModifiedPropertyNamesが実装されていなくても正常ですが、それ以外の場合も更新済みプロパティの取得が行われてしまうため、getModifiedPropertyNamesが実装されていない場合は、従来どおり空のSetを返すようにしたいと思います。

Comment by jundu [ 2007-09-13 ]

従来のNullBeanEnhancerでは、ModifiedOnlyの付いた更新メソッドが呼び出されたときに必ずTimestampやVersionNoを除く全てのカラムが更新対象外になっていたのを、BeanEnhancerImplと同様の実装にすることでgetModifiedPropertyNamesを自分で実装していれば、正常に動作するように変更します。

合わせて、getModifiedPropertyNamesが実装されていない場合は、BeanEnhancerImplと同様に例外が発生するように変更したいともいます。これは、TimestampやVersionNoだけを更新する処理というのが正常とは思えないためです。

ModifiedOnly機能を使う⇒getModifiedPropertyNamesを実装する
getModifiedPropertyNamesの実装が面倒⇒BeanEnhancerImplを使う。ただしデシリアライズに弱い

このような構図にしたいと思います。

  1. 問題は、BeanEnhancerImplとNullBeanEnhancerで重複するコードをどこに実装するか。。。
Generated at Thu Apr 25 22:11:35 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.