Quelle est la différence entre SaveOrUpdate et Save/Update dans NHibernate. Pourquoi n'utilisez-vous pas toujours SaveOrUpdate? Aussi, quel est l'intérêt de SaveOrUpdateCopy?
Le chapitre 9 couvre tout cela mieux que moi:
http://nhibernate.info/doc/nh/en/index.html
Mais la falaise note:
Save()
prend un nouvel objet sans identifiant et l'attache à la session. L'objet sera INSERT
'd.
Update()
prend un objet existant qui a un identifiant mais qui n'est pas dans la session et l'attache à la session. L'objet sera UPDATE
'd.
SaveOrUpdate()
regarde l'identifiant et décide de ce qui est nécessaire ci-dessus.
SaveOrUpdateCopy()
est spécial en ce sens que vous avez deux objets avec le même identifiant - un dans la session et un non. Si vous essayez et update
celui qui n'est pas dans la session, une exception est levée normalement (vous essayez maintenant de joindre deux objets qui représentent le même objet persistant à la session). SaveOrUpdateCopy()
copie l'état de l'objet non-session dans l'état de l'objet session.
Je ne sais pas comment vous allez utiliser NH, mais pour de nombreux cas, tout ce dont vous avez besoin est Save()
. La session effectue TOUT le travail nécessaire pour savoir ce qui doit être mis à jour et simplement Flush()
ou Commit()
fait tout ce dont vous avez besoin.