Question à propos de printemps transaction propagation
J'ai une question à propos de printemps de l'opération de multiplication. Si j'utilise @Transactional(propagation = Propagation.NÉCESSAIRE) annoter une méthode m1. Lors de l'exécution de la logique entrer en m1, s'il y a déjà une transaction, m1 sera l'utilisation que l'on. Quand, après m1, ce sujet de la transaction? Il se termine ou encore l'ouvrir?(si je l'appelle m1 dans une autre méthode, et après l'invocation, il y a encore d'autres choses à faire).
En résumé, je veux savoir quand sort d'une méthode annotée, l'opération se termine ou encore ouvrir?
Un grand merci.
OriginalL'auteur Ogrish Man | 2010-05-02
Vous devez vous connecter pour publier un commentaire.
Propagation.REQUIRED
(documenté ici) va créer une nouvelle transaction (si aucun n'existe, pour le thread en cours), ou se joindre à une transaction existante (le cas échéant).Lors de la sortie de la méthode, alors la transaction sera terminée (si l'entrée de la méthode causé une transaction à être créé), ou quitter la transaction ouverte (si une transaction qui existaient déjà lorsque la méthode a été entré). En d'autres mots, c'est symétrique, et laisse le thread transactionnelle de l'état dans le même état où il était avant la méthode de saisie.
Les différents multiplication des niveaux, et leurs effets sont décrits dans le lien que j'ai posté.
Merci staffman, après lecture de votre réponse soigneusement et faire quelques essais, j'ai compris le printemps transaction propagation de la politique. Un grand merci pour votre aide.
Pourriez-vous poster les scénarios que vous avez testé? Je suis confronté à des difficultés de compréhension les plus fines subtilités entre REQUISE vs REQUIRES_NEW. Ma transaction limites sont définies séparément, chaque opération appelée à partir d'un écoulement externe, donc je devrait être essentiellement de voir les opérations de façon séquentielle, mais je suis toujours en cours d'exécution dans des problèmes.
OriginalL'auteur skaffman