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 :

Datasource au lieu de JDBC dans application java


Sujet :

JDBC Java

  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 142
    Par défaut Datasource au lieu de JDBC dans application java
    Bonjour à tous

    Comme l'indique le titre, je suis en train de developper une application qui devrait interargir avec plusieurs bases de données. Il m'a été demandé de d'étudier la possibilité de le faire avec des datasource. Je rapelle que pour cette application je developpe avec eclipseRCP, SWt et Jface. Il n'est donc pas question ici d'une application web utilisant un quelconque serveur du type tomcat, encore moins des frameworks du type hibernate et struts.

    Je désire donc avoir un peur d'aide afin de pouvoir comprendre les datasources et ainsi commencer. La seule doc intéréssante que j'ai trouvé juqu'à présent se résume à celle ci: http://java.developpez.com/faq/jdbc/...ionsDatasource

    Je suis donc prenneur de lien vers des tutoriaux ou de docs (en francais tant qu'à faire )ou même de codes facile de compréhension me permettant de commencer.

    Merci d'avance de 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
    Dans la mesure où l'usage standard d'une DataSource implique l'usage de JNDI (sur la machine ou sur un serveur distant), ça paraît lourd pour pas grand chose, non ?

    Pourquoi ne pas utiliser une classe utilitaire avec un fichier de propriétés pour le paramétrage ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 142
    Par défaut
    Merci pour ta réponse OButterlin. Jdois t'avouer que moi même, j'ai pas ters bien compris pourquoi il (mon maître de stage) n'a pas voulu que je continue avec du jDBC standard.

    Pour situer le contexte, je développe une aplication de monitoring (visualisation de plus d'informations provenant de bases de données). Les requêtes à exécuter sont sous la forme de procédures stockées, et la BD pour l'instant est sous SQL Server.

    De ce que j'ai compris, il voudrais à terme pouvoir connecter l'application à d'autres bases de données venant d'autres SGBD tout en gérant les pools de connexion. L'idée étant de disposer d'un fichier xml de configurations dans le quel seraient présents tous mes datasource (chaqun étant lié à une base de données différente), ainsi que toutes les informations de connexion.

    Je ne sais pas si ceque j'écris est compréhensible. En tout cas voilà où j'en suis. Merci de votre aide

  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
    Si tu disposes d'un serveur d'application pour la partie pool de connexions et JNDI, ça ne pose plus de problème (et même l'usage d'une DataSource est un plus) mais sinon, un paramétrage des connexions par une classe utilitaire est (à mon avis) beaucoup mieux.
    Ci-joint un exemple
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    package com.database;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.ResourceBundle;
     
     
    /**
     * Classe utilitaire liée aux connexions base de données
     * <p>
     * L'acquisition d'une connexion requiert un fichier de propriétés nommé DataBaseConnection.properties
     * et contenant les attributs suivants :
     * <dl>
     * <dt>driver</dt>
     * <dd>Classe du driver JDBC</dd>
     * <dt>url</dt>
     * <dd>URL à prendre en compte pour la base de données</dd>
     * <dt>user</dt>
     * <dd>Nom d'utilisateur</dd>
     * <dt>password</dt>
     * <dd>Mot de passe de l'utilisateur</dd>
     * </dl>
     * Le driver JDBC doit également être accessible par le programme.
     * </p>
     * @author Olivier BUTTERLIN
     */
    public class DataBaseUtils
    {
        private static String driver;
        private static String url;
        private static String user;
        private static String password;
        static
        {
            ResourceBundle bundle = ResourceBundle.getBundle("DataBaseConnection");
            driver = bundle.getString("driver");
            url = bundle.getString("url");
            user = bundle.getString("user");
            password = bundle.getString("password");
        }
     
        /**
         * Récupération d'une connexion
         */
        public static Connection getConnection()
        {
            Connection connection = null;
            try
            {
                Class.forName(driver);
                connection = DriverManager.getConnection(url, user, password);
                connection.setAutoCommit(false);
            }
            catch (Exception e)
            {
                System.out.println("Erreur lors de l'acquisition d'une connexion : " + e.getMessage());
            }
            return connection;
        }
     
        /**
         * Fermeture d'une connexion
         */
        public static void closeConnection(Connection connection)
        {
            try
            {
                if (connection != null) connection.close();
            }
            catch (Exception e)
            {
                System.out.println("Erreur lors de la fermeture de la connexion : " + e.getMessage());
            }
        }
     
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    OButterlin a bien cerné ton problème.
    Un simple fichier propertiers, ou xml devrait te suffire à déclarer infos de tes différentes bases.
    Il suffira de lire ce fichier via ton application pour accéder à la base souhaitée.

    En ce qui concerne les pools de connexions, tu peux regarder du côté de C3P0 ou de Proxool par exemple.

  6. #6
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 142
    Par défaut
    Merci de vos réponses.

    La solution JDBC que j'avais proposé était presque identique à celle que tu me propose. je dispose en effet d'une classe utilitaire me permettant de gerer la connexion à la base de données. Avec comme seule différence le fait que pour l'instan, jnai ni fichier properties, ni fichier xml de config.

    Jvais essayer de convaincre mon maître de stage qu'on continue à le faire en JDBC.

    En attendant, je continu d'essayer de me documenter sur les datasources, même si elles ne me servent pas à terme, ce serait deja ca que de savoir a koi elles servent.

    Merci donc si vous avez un tuto ou des bout de code qui pourrait m'aider. Et escuser moi si je donne l'impression de persister vers cette voie qui semble être la mauvaise apparement.

  7. #7
    Membre Expert
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Par défaut
    Ton maître de stage a tout à fait raison de t'imposer la datasource. Quand on développe des classes d'accès aux données, celles-ci doivent pouvoir être déployées dans un maximum de contextes possibles : appli monoposte ou serveur d'application. Dans ce dernier cas, la solution datasource s'impose.

    Utiliser une datasource n'impose pas forcément du JNDI. Avec les implémentations qui sont citées dans la FAQ, le new est à ta charge.

  8. #8
    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
    Désolé également d'insister mais tu devrais vraiment demander à ton maître de stage de clarifier sa vue, parce que DataSource ne veut pas du tout dire "pas JDBC" ... C'est juste un autre moyen d'accéder à une connexion.

    Si tu veux t'affranchir de JDBC, alors il faudrait plutôt regarder du côté ORM (Hibernate ou TopLink)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    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
    Citation Envoyé par hasalex Voir le message
    Utiliser une datasource n'impose pas forcément du JNDI. Avec les implémentations qui sont citées dans la FAQ, le new est à ta charge.
    Je veux bien, mais quel intérêt par rapport à la classe utilitaire ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 142
    Par défaut
    Merci pour vos clarifications.

    Je me suis peut être mal exprimé, car il n'est pas question de s'affranchir completement de JDBC. De toute facon, de ce que j'ai lu sur les datasource, ces derniers renvoient des connexions. On pourrait donc ensuite utiliser nos bon vieux statement pour récuperer des résultset.

    Hasalex peux tu me dire stp de quelles implémentations dans la faq parles tu ? J'aimerais bien m'en inspirer.

    Une fois de plus, merci

  11. #11
    Membre Expert
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Par défaut
    Je veux bien, mais quel intérêt par rapport à la classe utilitaire ?
    L'intérêt, dans le cadre d'une application déployée dans un serveur d'applications, c'est que tu fais le paramétrage de ta datasource avec les techniques du serveur d'applications. L'intérêt, c'est aussi de pouvoir bénéficier des possibilités de pool, avec un réglage dans la console du serveur d'applications. L'intérêt, c'est aussi de pouvoir faire du monitoring des connexions via JMX.

    Pour résumer, la datasource est une classe d'utilitaire qui a déjà été implémentée par d'autres et qui permet d'intégrer sa gestion de connexions dans le serveur d'applications.

  12. #12
    Membre Expert
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Par défaut
    Hasalex peux tu me dire stp de quelles implémentations dans la faq parles tu ? J'aimerais bien m'en inspirer.
    Pour DBCP, le site fait un lien vers des exemples.
    Si tu prends la BasicDataSource, on l'initialise comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BasicDataSource ds = new BasicDataSource();
    ds.setDriverClassName("...");
    ds.setUsername("...");
    ds.setPassword("...");
    ds.setUrl("...");
    Avec c3p0, il y a moins d'exemples simples parce qu'il est souvent utilisé avec Hibernate. Mais tu trouveras l'équivalent du BasicDataSource avec le DriverManagerDataSourceBase.
    La doc de référence et la javadoc de c3p0 sont sur le site de mchange (maj de la faq ?).

  13. #13
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 142
    Par défaut
    Merci,

    Je m'y lance!

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

Discussions similaires

  1. accès internet via un proxy dans application java
    Par Tiéry dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 23/07/2009, 13h36
  2. Réponses: 2
    Dernier message: 09/04/2009, 07h52
  3. [webbrowser] webbrowser dans application java
    Par heider dans le forum Général Java
    Réponses: 5
    Dernier message: 10/04/2008, 07h32
  4. Dectecter proxy down dans application java
    Par lgi12 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 28/01/2008, 15h42
  5. [Java-Swing][HTML] Page html à inclure dans application Java
    Par terminagroo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 04/07/2005, 10h04

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