Bonjour,
Profitant de l'été pour dépoussiérer les connaissances, je suis en train de travailler sur une classe de gestion des accès aux bases de données.
Les objectifs sont les suivants :
1. Etre générique autant que possible (utilisation de DbProviderFactory, DbConnection, DbCommand etc.)
2. Encapsuler et simplifier l'exécution des requêtes, des procédures stockées, la gestion des paramètres
3. Servir à gérer les accès BDD dans une couche DAO par exemple avec une ou plusieurs bases de données
La classe DataProvider du tutoriel suivant m'a servi de base :
http://johannblais.developpez.com/tu...acces-donnees/
Dans un premier temps, j'utilise comme dans le tutoriel des méthodes statiques afin d'optimiser les performances.
Le problème, c'est que si je veux utiliser des bases de données différentes dans un projet, j'ai un soucis avec la configuration de la chaîne de connexion.
En effet, je ne me vois pas changer la chaîne de connexion chaque fois que je veux exécuter une requête.
J'avais pensé faire une classe de base et faire de l'héritage pour avoir deux classes héritée distinctes avec une chaîne de connexion différente. Malheureusement, vu que les propriétés et méthodes sont statiques, cela ne fonctionne pas...
Pour l'instant, je sèche et ne vois que deux pistes :
Changer les méthodes statiques par des méthodes normales et configurer la chaîne de connexion dans le constructeur par exemple, mais cela m'obligera à instancier la classe chaque fois que j'ai besoin de faire un accès à la base de données.
Ou bien utiliser la solution précédente, mais avec une classe de type singleton pour chaque base de données afin de limiter les créations et destructions d'objets. Seulement, l'utilisation d'un singleton pour gérer les accès aux bases de données semble déconseillé (surtout en ASP.NET), bien que je ne vois pas de différence flagrante au niveau du fonctionnement par rapport aux méthodes statiques...
Copier comme un porc ma classe actuelle avec ses méthodes statiques me semble contraire à tous les principes de la POO
Une idée pour résoudre le problème de façon élégante ?
Ou bien, est-ce que je me prend la tête pour rien, et créer et détruire sans arrêt des objets d'accès aux données comme avec Data Application Block ou Enterprise Library n'est pas si grave en terme de performance ?
Merci de votre aide
Partager