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

JDBC Java Discussion :

[JDBC] Connexion : objet et/ou interface ?


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 14
    Points : 16
    Points
    16
    Par défaut [JDBC] Connexion : objet et/ou interface ?
    Bonjour,

    J'ai cherché aujourd'hui à créer une classe dérivée de l'objet Connection après avoir vu dans des tutoriels sur le net qu'on devait instancier cet objet pour ouvrir une session sur un SGBD. Netbeans n'a jamais voulu laisser passer ça et après m'être interrogé longuement sur l'erreur qu'il me signalait, je me suis rendu compte que Connection est une interface.

    On instancie donc une interface ?! Qui plus est qui dérive d'un objet ("Wrapper") ?! J'y perd mon latin ... Quelqu'un peut-il m'éclairer ? Quel intérêt pour les concepteurs de JDBC ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    on instancie pas une interface. On instancie un objet qui implémente cette interface. L'intéret est simple. Contrairement à une classe abstraite, avec un interface le fournisseur de driver sont libre de faire leur code comme ils veulent.

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Baal Voir le message
    J'ai cherché aujourd'hui à créer une classe dérivée de l'objet Connection
    Pourquoi as tu besoin de cela ???

    Citation Envoyé par Baal Voir le message
    On instancie donc une interface ?! Qui plus est qui dérive d'un objet ("Wrapper") ?! J'y perd mon latin ... Quelqu'un peut-il m'éclairer ? Quel intérêt pour les concepteurs de JDBC ?
    1. On n'instancie pas un interface (tu ne fait pas de new Connection() !), mais en en obtient une classe qui l'implémente. En fait le driver JDBC propose une classe qui implémente l'interface Connection, et qui se chargera de renvoyer les bons éléments.
    2. "Wrapper" n'est pas un objet mais une interface. Une classe peut tout à fait étendre une autre interface...
    3. En fait la majorité des éléments de JDBC sont des interfaces...


    L'intérêt de tout cela consiste à séparer la spécification de l'implémentation.
    En gros dans l'API standard de JDBC tu as toute une série d'interface qui décrivent les spécifications de JDBC, via une série d'interface et de méthode à respecter.

    De l'autre coté, chaque fabriquant peut implémenter son propre driver JDBC.
    C'est à dire qu'il devra créer les classes implémentant les interfaces de JDBC, qui "traduiront" cela via des requêtes vers leurs propres SGBD.


    La classe DriverManager se contente ensuite de lier les deux : elle te renvoit la classe de ton driver qui implémente Connection.


    D'un point de vue développeur, cela permet une complète abstraction puisque tu utilises les interfaces.
    Cela permet donc de changer de driver JDBC et donc de SGBD très simplement puisdque tu n'as que l'URL de connection à changer.
    Les classes seront différentes mais elles implémenterons les mêmes interfaces, donc cela ne change rien dans ton code (à partir du moment où tu n'utilsies pas de SQL spécifique).



    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [jdbc] connexion impossible à sql server
    Par hari dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 01/04/2005, 18h27
  2. Objet COM et interface
    Par pio_forum dans le forum Windows
    Réponses: 7
    Dernier message: 08/11/2004, 17h25
  3. Réponses: 15
    Dernier message: 20/07/2004, 09h09
  4. [JDBC]Connexion distante a SQLServer
    Par FreshVic dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 01/07/2004, 11h06
  5. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37

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