2

私は Grails を使用しています。Grails は、Hibernate を内部で永続化するために使用します。

私の質問は、ダーティチェックに頼るのが良い習慣なのかsave()、エンティティを変更するたびにエンティティのメソッドを常に明示的に呼び出す必要があるのか​​ということです。

UPD:この質問は、ダーティ チェック メカニズムに関するものではなく、信頼性に関するものです。つまり、エンティティを更新する場合:

def user = User.get(1)
user.name = 'new name'
user.save()  //optional

最後の行を省略できます。Hibernate はそれ自体で変更を検出して保持しますが、100% 確信できるでしょうか?

プロジェクトの更新後に常に明示的に save() を呼び出しますか?

4

2 に答える 2

0

すべてのエンティティの挿入と更新は & を使用して保存されましSession.save()Session.saveOrUpdate()

で保存を開始しない限りsession、それらはDataBaseもう保存されません。

オブジェクトを保存したら、まだオブジェクトを変更している Hibernate のDirty checking画像が表示されます。

ではdirty checkinghibernateオブジェクトが変更されている (または変更されていない) かどうか、および更新する必要があるかどうかが自動的に検出されます。つまり、オブジェクトがpersistent state特定のセッション (org.hibernate.Session) にバインドされている限り。Hibernate はオブジェクトへの変更を監視し、SQL を実行します。

于 2013-02-17T00:10:11.020 に答える