IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

2 questions précises: DAO, singleton, et serveur applicatif j2EE


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 64
    Points : 78
    Points
    78
    Par défaut 2 questions précises: DAO, singleton, et serveur applicatif j2EE
    Etant donné que:

    - tomcat implémente les "pools de connexions" (cf. le très bon tutorial sur ce site)
    - mysql accepte plusiseurs connexions simultanées (vive le multithread)

    Je me pose très sincèrement la question de la pertinence du singleton.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Le singleton est un Design Pattern. Je ne voit pas le rapport avec l'accès à la base de données.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    aucun rapport entre le singleton et le design pattern. De plus, il y a eu une logue discussion au sujet de la pertinence des singletons sur ce forums il y a pas si longtemps. Je te suggère d'utiliser la fonction rechercher.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 64
    Points : 78
    Points
    78
    Par défaut
    Effectivement beaucoup de débats...pour tous les langages OO. Aucun n'apporte pourtant de réponse concrète à la question.

    Je lis d'un coté:
    Un singleton pour une connexion à la base de données est une grosse erreur de conception, à fortiori dans un environnement ASP.NET intrinséquement multi-threadé.
    Je vois de l'autre:

    j'ai implementé un sigleton pour ma classe DAO
    Je ne suis pas sur de percevoir un intérêt réel au singleton. Je vais donc formuler deux question précises:

    Question 1:

    Pourquoi une grande majorité de programmeurs utilisent le pattern Singleton pour impléenter leur classe d'accès au SGBD ? Intérêt ? Impact sur les performances ?

    Question 2 (plus propre à l'implémentation du apttern singleton):

    Pourquoi faire un "singleton" (donc j'imagine avec double vérification que l'insance est "null") et non une simple classe statique pour une classe DAO ?

    Merci a tous ceux qui seront capables de répondre de manière claire et concise.

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 89
    Points : 70
    Points
    70
    Par défaut
    Salut,
    Pour la première question, je pense que d'une manière générale un singleton permet de gagner de l'espace mémoire puisqu'on a le meme instance qui est utilisée par toutes les autres instances du programme, et qui un gain en temps de réponse puisqu'on va aller chercher directement une instance existante au lieu d'en créer une depuis le début. (Le processus d'instantiation est assez lourd). Puisque les acces en base sans nombreux l'utilisation d'un singleton semble plus optimale.

    Pour la deuxieme question, un singleton est implémenté en utilisant des variables statiques. Seulement en utilisant le singleton, les autres classes n'ont plus en charge la gestion de cette variable. C'est le singleton qui gère les variables statiques qui sont "dedans" notament leurs cycles de vies.

    J'espere que j'ai pas dit de betises.

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pourquoi un DAO singleton alors qu'on a les connection pool? Ben tu touren autour du pot, l'accès au connection pool doit se faire par une classe ou une autre. Dans des webapps, le pool (qui peut etre vu comme une isntance unique de 'pool' sur un db précise) est géré par le conteneur, et là c'est mieux qu'un singleton qui gère la connection. Dans les applis standalone, c'est souvent le contraire.

    pourquoi le singleton d'une manière générale: quand tu veux partager une isntance avec plein d'objets utilisateurs.

    pourquoi pas une classe statique avec méthodes statique? Le pattern singleton est un pattern qui permet de garantir *une* et *une seule* instance. Il ne faut pas le confondre avec une classe utilitaire (qui elle, typiquement, n'a que des méthodes statiques, donc sans état).
    De plus un signelton peut implémenter des interface, ce que ne peux pas faire une classe purement statique (on ne sais pas définir de méthode statique dans un classe). Enfin, contrairement à une classe utilitaire, on a parfois besoin de faire un descendant d'un singleton ou de passer ce singleton en paramètre à une méthode.

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    aucun rapport entre le singleton et le design pattern.
    Désolé, je ne comprends pas. Le singleton n'est pas un design pattern ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    désolé, j'écrit trop vite, je voulais dire "aucune rapport entre le singleton et la gestion de la connection"

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/02/2008, 12h42
  2. Profils itinérants (questions précises)
    Par goomazio dans le forum Windows Serveur
    Réponses: 15
    Dernier message: 24/11/2007, 17h17
  3. question précise et remerciements
    Par Mr.joker dans le forum Oracle
    Réponses: 3
    Dernier message: 22/10/2007, 20h02
  4. Réponses: 6
    Dernier message: 26/04/2007, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo