Le printemps JdbcTemplate et les Transactions
Lors de l'utilisation de JdbcTemplate, dois-je configurer explicitement les transactions?
Mon code de mise en page se présente comme suit:
Je vais avoir un UserDao qui sera injecté dans mon UserService, et puis mon Contrôleurs de faire des appels de méthodes dans mon UserService.
Je tiens à garder les choses aussi simples que possible transaction sage, et je n'ai pas besoin de base de données multiples appels à la durée d'une transaction.
Par défaut, dois-je faire quoi que ce soit dans mon fichier de configuration ou de l'utilisation d'un @Transaction
annotation n'importe où?
Maintenant dire dans mon contrôleur je besoin de faire 2 appels sur mon userService et accountService, je pourrais explicitement l'envelopper dans une transaction en quelque sorte?
userService.updateUser(user);
accountService.updateXXX(...);
OriginalL'auteur loyalflow | 2012-09-28
Vous devez vous connecter pour publier un commentaire.
Oui,
JdbcTemplate
n'est pas un substitut pour la gestion des transactions. Vous bénéficiez de transactions de base de données, de sorteuserService.updateUser
fonctionnera dans un base de données transaction, mais siaccountService.updateXXX
échoue,userService.updateUser
sera pas restauration.Si vous ne souhaitez pas utiliser l'AOP, vous pouvez utiliser TransactionTemplate à la place. Voir programmatique, la gestion des transactions dans le Printemps De La Documentation De Référence.
Un modèle que j'ai vu auparavant, c'est pour le MVC contrôleur de classe pour appeler un service de l'entreprise, qui encapsule l'opération. La méthode de la classe affaires pourrait être annoté
@Transactional
.Il est, mais il est très utile si vous avez besoin d'accéder à la
TransactionStatus
.+1 pour le service d'affaires idée. À mon humble avis, la vie serait plus facile si tout le monde fait ça.
Je veux juste savoir comment PlatformTransactionManager faire une relation avec jdbcTemplate, parce qu'ils ont une source de données
OriginalL'auteur David Grant
Si votre contrôleur veut faire plusieurs choses avec les utilisateurs et les comptes et ont tout ce qui se passe à l'intérieur d'une transaction, alors vous devriez avoir un service avec une méthode qui fait tout ce genre de choses. La création d'un service par DAO n'est pas une bonne idée, parce que vous finissez par ne rien faire wrappers autour de DAOs et le traitement sera lente, car la base de données sera de créer une transaction distincte pour chaque appel à un DAO, vous font faire beaucoup plus de travail qu'il devrait avoir.
Le service doit fournir des fonctionnalités pour le responsable du traitement ou toute autre personne qui est en l'appelant. J'essaie de créer des services avec l'idée que le service fournit des fonctions utiles à un certain type d'utilisateur.
OriginalL'auteur Nathan Hughes