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 :

besoin d'avis sur un schéma de connexion


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 143
    Par défaut besoin d'avis sur un schéma de connexion
    Bonsoir,

    Je réalise une application web(struts, glassfish) devant se connecter a plusieurs types de base de données, j'ai donc réalisé le schéma suivant:

    Interface CatalogBDD qui contient des méthodes pour exécuter une requête, un update, un insert.

    Une factory factoryConnexion qui contient une méthode permettant de récupérer selon le type demandé(oracle,...) un objet de type CatalogBDD.

    J'ai plusieurs classes qui implémentent CatalogBDD et leur constructeur qui va etre appellé par la factory ressemble a ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    private static Connection maco;
     
     public OracleConnexion() {
        try {
          if(maco == null)
            getConnec();
          myStat = maco.createStatement();
        } catch (SQLException ex) {
          Logger.getLogger(OracleConnexion.class.getName()).log(Level.SEVERE, null, ex);
        }
      }
     
      public void getConnec() {
        this.jdbc = "";
        this.username = "";
        this.password = "";
     
        try {
          Class.forName("oracle.jdbc.OracleDriver");
          maco = DriverManager.getConnection(jdbc, username, password);
        } catch (SQLException ex) {
          Logger.getLogger(OracleRequest.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
          Logger.getLogger(OracleRequest.class.getName()).log(Level.SEVERE, null, ex);
        }
      }
    L'inconvénient de cette méthode, donc avec un singleton si je ne me trompe pas, c'est lorsque je demande une connexion alors que je n'ai pas fini d'exploiter un resultSet d'une précédente connexion. Tout se passe bien jusqu'à temps que je retourne dans mon précèdent resultSet qui provoque une exception resultSet is closed...

    Ma méthode est elle tout de même correcte ou complément mer**que.
    Car je vois pas comment utilisé un pool de connexion...

    Merci pour votre aide !!!!

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Elle n'est pas totalement mer**que, rassure toi
    Cependant, je ne mettrais pas l'objet Connection comme membre static de ta classe utilitaire. Il serait préférable d'avoir une méthode static getConnection() et de laisser gérer l'objet renvoyé par la méthode appelante. De ce fait, tu n'aurais plus ton problème.
    Personnellement, je n'ai que la gestion de l'acquisition et fermeture d'une connexion dans mes classes utilitaires, un truc comme ça (simplifié)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ...
    public static Connection getConnection()
    {
       return DriverManager.getConnection(....);
    }
     
    public static closeConnection(Connection connection)
    {
       if (connection != null)
       {
          try { connection.close(); } catch (Exception e) {}
       }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 143
    Par défaut
    Merci pour votre aide.

    Cependant j'implémente une interface, je ne peux donc pas avoir de méthodes statiques...

    Je ne vois pas d'autres solutions

    Si vous avez une autre idée je suis preneur !!!

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Quel est le besoin exactement ?

    1- Tu as une instance d'un objet d'acquisition de connexion par serveur mais en fonction du serveur ça peut être une base Oracle ou DB2 ou ...

    2- Tu as besoin de changer le type de connexion sur un même serveur en cours d'exploitation
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 143
    Par défaut
    Je dirais le cas 1 dans le doute je donne plus d'informations:

    Mon client léger est amené a évoluer sur plusieurs serveurs et en fonction du client se sera pour oracle ou toute autre bases de données...

    C'est pour ca que j'ai construit une factory de connexion en fonction du type il retourne toujours le même type de connexion, un client sera dédié soit a oracle soit ... mais ne pourra pas changer en cours d'utilisation!

    J'espère que c'est assez clair

    Merci encore

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Euh... là, j'ai du mal à comprendre...

    Un client léger, c'est un client html (browser), donc, le code s'exécute toujours sur le serveur... est la page est liée à ce serveur...
    Tu entends quoi au juste par client léger ?

    Fonctionnellement, ton application fait quoi ?

    A+
    (désolé, j'essaye de comprendre... et comme je reviens de vacances, je ne suis pas très percutant, j'en ai peur )
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [débutant] besoin d'avis sur architecture de base.
    Par Mathusalem dans le forum Oracle
    Réponses: 3
    Dernier message: 14/11/2006, 16h43
  2. Besoin d'avis sur mon thread
    Par SanNash dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 20/06/2006, 12h44
  3. Besoin d'avis sur PC
    Par ren29 dans le forum Ordinateurs
    Réponses: 28
    Dernier message: 11/12/2005, 22h32
  4. Besoin d'avis sur un offre d'embauche en SSII
    Par Anne_so2121 dans le forum SSII
    Réponses: 14
    Dernier message: 25/07/2005, 14h09

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