Question

Si j'utilise la transaction à base d'attribut dans Spring.Net, quelque chose ressemble à

[Transaction()]
public void MyBusinessMethod()
{
   // doing some in memory calculation, may take some time
   Prepare();

   // actual db access code
   DbAccess();
}

Dans la méthode, Prepare() fera un travail de préparation sans impliquer la couche de base de données. Pour des performances optimales, la connexion db doit être ouvert juste avant DbAccess(). Cependant, depuis que je suis en utilisant AOP pour faire la transaction et il applique au niveau de la méthode, cela signifie que ne sera ouvert la connexion lorsque l'on appelle la méthode MyBusinessMehtod? Dans ce cas, est-il un moyen d'améliorer cela? Une façon je peux penser est le facteur le DbAccess vers sa propre méthode. En outre, toutes les autres bonnes recommandations?

Était-ce utile?

La solution

Une option consiste à mettre en œuvre une simple classe « scope transaction » qui commence explicitement la transaction de printemps (en utilisant la gestion programmatique des transactions). Cela permettrait également la gestion supplémentaire de la session de transaction, comme le déclenchement logique de validation, etc.

Une autre (simple) option est soit factoriser votre méthode telle que DBAccess est appelée à partir d'une méthode spécifique à la transaction (vous pouvez avoir d'autres travaux transactionnels y regroupés ainsi) ou déplacer l'attribut dbAccess.

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