-
avis sur java et jdbc
Bonjour :lol: , je developpe actuellement une application java non web. Mon app communique via jdbc avec MySQL. La question est la suivante, faut-il tenir l'object connection pendant la vie de mon app et le passer en parametre a chaque classe qui en aura besoin ou faut il que je m'addresse a la base faire un DriverManager.getConnection(...) et faire un close ensuite, pour chaque requete?
-
La réponse est un POOL DE CONNEXION (comme "Apache DBCP" par exemple), qui crée un stock de connexions au démarrage de ton application : et dont tu en réserve une quand besoin est ; tu passes alors ta connexion à travers toutes tes fonctions, l'utilises avant de la libérer dans le pool au final...
-
Un close à chaque requete, et ce close doit être effectué dans le bloc finally suivant ton try/catxh sur une SQLException
-
J'ai le meme genre d'appli en developpement en ce moment meme et j'ai opté pour la seconde solution.
Je pense que ca depend enormement du nombre de requetes et du traitement de celles-ci.
Pour ma part je prefere tout de meme cette solution car ca te permet, si ton logiciel attend des instructions de l'utilisateur, de ne pas saturer la connection à ta base en faisant des sorte de "pauses"(enfin je crois ^^).
-
merci bcp les gars, je ferai comme vous le conseiller. Par contre concernant le POOL DE CONNEXION, j'ai pas trop bien compris, dans mon cas a moi, ou se trouve le stock de connexions(car j'ai pas Apache ici puisque c'est pas une web app) et comment avoir mon identifiant de connexion?
-
Une librairie trés simple d'utilisation : les jakarta commons DBUtils :
http://jakarta.apache.org/commons/dbutils/
Une trés bonne et claire explication :
http://christophej.developpez.com/tutoriel/api/dbutils/
-
Ca dépend de ce que tu veux faire en fait. Si tu as assez souvent des requetes a faire, moi perso j'obterai pour l'ouverture de la connexion en début de programme et la fermeture a la fin. Maintenant si tu fais des requetes que tres rarement, tu peux trés bien ouvrir/fermer a chaque fois la connexion.
-
Je suis du même avis que Scorpyosis, si tu fais beaucoup de requêtes, je pense que tu t'en tireras mieux avec une connexion ouverte en début de programme et fermée à la fin. Car s'il faut ouvrir à chaque fois une nouvelle connection et la fermer pour chaque requête, tu pourrais en avoir pour long. C'est en tout cas la méthode pour laquelle j'ai opté pour mon programme avec mysql.
-
Tout dépend aussi de ton temps d'execution de ton application.
Il est fortement déconseillé de laisser une connexion JDBC ouverte trop longtemps. Dans tout les cas, avec une connexion persistante (donc jamais fermé) test la connexion avant de l'ouvrire pour le cas où elle aurrait été fermée par la base de données. En effet, les connexion ouverte mais non utilisé sont souvent fermé du coté base de données.
-
Si ton application execute séquentiellement les requêtes, je ne vois pas trop l'interet d'un pool de connexion ?
Pour la politique d'ouverture/fermeture de la connexion, l'essentiel a déjà été dit !