32 votes

Meilleures pratiques de NHibernate Transactions

J'ai lu à propos de Nhibernate pour un certain temps et ont essayé de l'utiliser pour un site que je suis en œuvre. J'ai lu l'article de Billy McCafferty sur NHibernate les pratiques exemplaires, mais je ne vois aucune indication sur l'endroit où est le meilleur endroit pour gérer les transactions.

J'ai pensé à mettre ce code dans les DAO (Data Access Object) mais ensuite je ne suis pas sûr de la façon de gérer les cas où plus d'un DAO est utilisé. Quels sont les meilleurs endroits pour mettre le code de transaction dans votre NHibernate Application?

11voto

Liang Wu Points 623

Basé sur Ayende, vous aurez probablement besoin d’ajouter explicitement une transaction à tous, même à la recherche. Veuillez vérifier ici: http://nhprof.com/Learn/Alerts/DoNotUseImplicitTransactions

10voto

Sean Carpenter Points 5588

Cela dépend vraiment de votre environnement. Par exemple, nous utilisons l' Ouvrir de Session En Vue (Java lien, mais le motif est le même dans .Net) motif sur un ASP.Net site et utiliser un HttpModule pour le contrôle des sessions et des transactions. Le HttpModule ouvre une session et démarre une transaction dans le BeginRequest événement, puis valide la transaction et ferme la session de l'événement EndRequest.

Les différents environnements et des modes de communication conduira à différents session/transaction stratégies de gestion.

Il y a beaucoup de discussions sur les diverses stratégies dans le NHibernate Groupe d'Utilisateurs ainsi que sur le web en général.

0voto

Yogee Points 395

Le moyen le plus simple consiste à utiliser Smart Transaction, décrite dans

http://rajputyh.blogspot.com/2011/02/nested-transaction-handling-with.html

Il utilise le populaire NHibernateSessionManager et une classe simple est écrite pour garantir que "vous ouvrez une transaction quand vous le souhaitez" sans vous soucier de la logique parente et de la sous-logique qui gère la transaction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X