web-dev-qa-db-fra.com

SaveOrUpdate Vs Update and Save in NHibernate

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?

59
RD3

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.

71
anonymous