Est l'unité de travail plus efficace si je ne me soucie pas des transactions etc?

StackOverflow https://stackoverflow.com/questions/925919

  •  06-09-2019
  •  | 
  •  

Question

Si j'ai 10 appels de base de données sur ma page web, et aucun d'entre eux nécessitent des transactions, etc. Ils sont tout simplement obtenir des données de la base de données (lit), dois-je utiliser l'unité de la classe de travail?

Est-ce parce que la création d'une nouvelle session par appel de la base de données est trop cher?

Était-ce utile?

La solution

Avec NHibernate, la création de l'usine de session est très cher (donc vous aurez envie de mettre en cache l'usine de la session une fois qu'il est créé, probablement sur le HttpApplication), mais la création de session est vraiment pas cher. En d'autres termes, si elle maintient votre propre code, les créations de session multiples ne sont pas nécessairement une mauvaise chose. Je pense que la documentation NH dit mieux:

  

Un ISessionFactory est un   coûteux à créer, objet threadsafe   destiné à être partagé par tous   threads d'application. Un ISession est un   peu coûteux, objet non threadsafe   qui devrait être utilisé qu'une seule fois, pour une seule   processus d'affaires, puis mis au rebut.

Ainsi, en utilisant le modèle UOW est probablement pas plus efficace en raison de la charge supplémentaire, mais il est une bonne pratique et les frais généraux est probablement ne va pas te faire du mal. L'optimisation prématurée et tout cela.

Autres conseils

Oui, vous devez utiliser une transaction. Du blog de Ayende:

« NHibernate supposer que tous les accès à la base de données est effectuée en vertu d'une transaction, et décourager fortement l'utilisation de la session sans une transaction. »

Pour plus de détails, voici un lien vers son blog annonce:

http://ayende.com/Blog/archive/2008/12/28/nh-prof-alerts-use-of-implicit-transactions-is-discouraged.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top