2009-11-01 6 views
3

Bonjour, Je construis une application web avec spring ibatis et mysql. Je vais utiliser les procédures stockées mysql et je les appellerai avec ibatis. Ma question concerne la gestion des transactions. Dois-je gérer les transactions dans les procédures stockées ou avec spring/ibatis ou avec les deux?Spring, iBatis, MySQL - comment gérer les transactions?

Répondre

1

Ayant utilisé Ibatis et stocké procs assez heureusement, je ne vois rien de fâcheux dans cette approche. Ibatis est idéal pour transmettre facilement des paramètres dans vos processus de modification de données et pour gérer les jeux de résultats des processus get-data de manière appropriée.

Ibatis peut également gérer la sortie de plusieurs jeux de résultats si vos procs choisissent de le faire.

Du côté des transactions: cela dépend. Si votre application peut être exécutée en général en mode de validation automatique, mais que vous disposez de quelques process distincts nécessitant des transactions, la gestion par proc peut fonctionner pour vous. Vous pouvez concevoir votre application de manière à ce que tout ce qui nécessite des transactions soit orchestré par un seul processus «parent». Ne pas dire que c'est un modèle particulièrement admirable, mais cela fonctionnerait probablement dans une mesure raisonnable. Si cela ne vous convient pas, les transactions gérées par Spring sont définitivement un bon choix à implémenter dès le premier jour et l'approche la plus susceptible de croître avec élégance avec votre application. Conclusion - Soyez conscient de l'imbrication des transactions, c'est-à-dire si vous avez une gestion des transactions app/Spring, quelle que soit la gestion des transactions que vous mettez dans procs, jusqu'à ce que COMMIT du côté de l'application correctement "engagé" (ils peuvent avoir des utilisations, mais c'est plus que ce que j'ai l'intention d'entrer ici). Éditer - Depuis que j'ai écrit ceci, j'ai appris que différents DBs gèrent différemment l'imbrication de COMMIT. Il semble qu'Oracle traite en particulier un COMMIT comme un COMMIT indépendamment de l'imbrication, de sorte que procs que commit dans une transaction autrement gérée par l'application soit correctement validée.

1

Je ne sais pas pourquoi vous utilisez des procédures stockées. Puisque vous êtes, je ne sais pas ce que iBatis vous achète. Si j'écrivais cette application, j'utiliserais Spring et iBatis ou Spring et les procédures stockées, mais pas les deux.

Je gérerais les transactions en utilisant Spring, en veillant à ne pas mettre de logique de transaction dans les procédures stockées.