portalez wrote:
Je ne suis pas sûr d'avoir tout bien compris. S'agit-il de factoriser le code de de début de transaction et celui de fin de transaction ?
Oui.
portalez wrote:
Un petit schéma :
...
A chaque requête, on est obligé d'ouvrir une transaction puis de la fermer.
L'idée est de se ramener au schéma suivant :
...
Ai-je bien compris la finalité ?
Oui
portalez wrote:
Dans ce cas, je me demande s'il est correcte de sortir la gestion des transactions de la couche DAO.
Si l'on évite de créer n connexions à la base (quoiqu'avec un pool, ce n'est pas pénalisant), qui correspondent aux n requêtes, on mélange les couches.
Et que faire quand la servlet n'utilise pas de requête ? Ne risque-t-on pas d'ouvrir et fermer une connexion pour rien ?
Je pense que sortir la gestion des transactions de la couche DAO n'est pas obligatoirement un problème.
On peut comparer un filtre à un aspect (dans le sens de la programmation orientée aspect). Et il est possible de d'examiner la requête dans le filtre et par conséquent de ne pas ouvrir systématiquement une transaction - mais cela commence à nous entraîner trop loin...
À tort ou à raison je considère qu'un filtre n'est pas vraiment une solution idéale - ta remarque sur le mélange des couches a du vrai. Avec un framework comme Spring il est possible d'être plus "subtil" et d'utiliser la puissance de la programmation orientée aspect sans mélanger les couches - mais je ne peux pas là non plus aller dans les détails. Si tu veux en savoir plus sur ce thème, lis par exemple
http://static.springframework.org/spring/docs/1.2.x/reference/transaction.html).
portalez wrote:
J'espère ne pas avoir dit trop de bêtises et obtenir vos remarques sur le sujet qui me semble intéressant.
Mes quelques remarques sur ces thèmes. Il est clair que le sujet n'est qu'égratigné superficiellement - il y a certainement des rangées entières de livres sur ces thèmes...
Erik