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

Hibernate Java Discussion :

acces a plusieurs bases de donnees


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 233
    Par défaut acces a plusieurs bases de donnees
    Bonjour

    J ai jusqu a maintenant une appli hibernate qui tourne bien, mais je vais devoir rajouter une interface a une autre base de donnees sur un autre serveur oracle (en lecture seule)
    Dans le fichier de configuration d hibernate, on peut indiquer apparement qu une seule BD:
    <property name="hibernate.connection.url">jdbc:oracle:thin:@....</property>
    et un seul mot de passe

    D un autre cote, chaque fichier de mapping precise le schema comme par ex
    <class name="com.Basictest" table="BASICTEST" schema="TER">

    1) y a t il une otion que je n ai pas vu pour indiquer a hibernate qu il doit chercher sur un 2eme serveur ?

    2) l acces aux table de l autre BD peut se faire via un DBlink oracle (donc pour hibernate ca sera une table locale)

    3) y a t il une meilleure option?

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    En théorie, tu peux avoir plusieurs SessionFactory, une par base de donnée.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 44
    Par défaut
    Dans la pratique aussi tu peux avoir deux sessions factory

    Exemple : sous JBoss on peut déployer deux sources de données (avec conf xml pour Hibernate).

    Ensuite on utilise plusieurs SessionFactory

    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
     
    String hibernateFactoryName1 = "java:/hibernate/HibernateFactory1";
    String hibernateFactoryName2 = "java:/hibernate/HibernateFactory2";
     
    SessionFactory sessionFactory1 = (SessionFactory) ctx.lookup(hibernateFactoryName1);
    SessionFactory sessionFactory2 = (SessionFactory) ctx.lookup(hibernateFactoryName2);
     
    ...
     
    Session session1 = sessionFactory1.openSession();
    Session session2 = sessionFactory2.openSession();
     
    ...
     
    session1.close();
    session2.close();

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Par défaut
    En fait tu peux appeler la méthode "configure" d'un objet de type "Configuration" avec différent paramètres :

    - Configuration configure()
    Use the mappings and properties specified in an application resource named hibernate.cfg.xml.

    - Configuration configure(org.w3c.dom.Document document)
    Use the mappings and properties specified in the given XML document.

    - Configuration configure(File configFile)
    Use the mappings and properties specified in the given application file.

    - Configuration configure(String resource)
    Use the mappings and properties specified in the given application resource.

    - Configuration configure(URL url)
    Use the mappings and properties specified in the given document.
    Extrait de : http://www.hibernate.org/hib_docs/v3...iguration.html

    Il ne te reste plus par la suite qu'a appeler par dessus la méthode buildSessionFactory() pour récupérer un factory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SessionFactory sf = new Configuration().configure("FICHIER DE CONF BD 1").buildSessionFactory();
     
    SessionFactory sf2 = new Configuration().configure("FICHIER DE CONF BD 2").buildSessionFactory();
    Te voila avec 2 sessions factory...

    Après ca tu peux meme utiliser la réplication d'objet pour rendre un objet persistant de ta session de bd1, dans la session de ta bd2 :

    Extrait du chapitre 10.9 de la documentation hibernate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //récupère un cat de la base de données
    Session session1 = factory1.openSession();
    Transaction tx1 = session1.beginTransaction();
    Cat cat = session1.get(Cat.class, catId);
    tx1.commit();
    session1.close();
     
    // réconcilie la seconde base de données
    Session session2 = factory2.openSession();
    Transaction tx2 = session2.beginTransaction();
    session2.replicate(cat, ReplicationMode.LATEST_VERSION);
    tx2.commit();
    session2.close();

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 233
    Par défaut super!
    merci pour tout, j essaye ca aujourd hui


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

Discussions similaires

  1. acces a la base de donnees
    Par hto340 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/07/2006, 00h31
  2. Erreur d'acces a une base de donnees: idapid32.dll
    Par mevellea dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/10/2005, 19h10
  3. [Sécurité]Gestion des accès dans plusieurs bases
    Par vincentj dans le forum Débuter
    Réponses: 1
    Dernier message: 05/01/2005, 14h19
  4. liaison entre plusieurs base de donnee
    Par GMI dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/12/2004, 18h42
  5. Accès à plusieurs bases de données
    Par k4eve dans le forum Hibernate
    Réponses: 11
    Dernier message: 22/04/2004, 15h43

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