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

Persistance des données Java Discussion :

[Hibernate][J2EE][EJB3]Persistance dynamique à plusieurs base de données


Sujet :

Persistance des données Java

  1. #1
    Membre du Club Avatar de Soronite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 82
    Points : 46
    Points
    46
    Par défaut [Hibernate][J2EE][EJB3]Persistance dynamique à plusieurs base de données
    Bonjour tous le monde,
    Je suis en train de concevoir une plateforme en J2EE et je suis devant je pense un cas assez atypique...
    Je dois dans mon application créer des bases de données qui sont enfaite la copie d'une première base (un copier/coller de base en quelque sorte) puis certains de mes EJBS devront se "brancher" sur la base spécifier le cas échéant. Donc voila les questions :
    1) Pour créer ma base et mettre mes tables depuis mon programme J2EE je dois :
    - Utiliser une procédure stocké (ou une simple requête SQL) ?
    - Utiliser une option ou une méthode de Hibernate pour créer un base de donné et remplir avec les tables de mes Entitys ?

    2) Pour "brancher" mes EJBs je dois :
    - Créer une untité de persistance et un datasource, mais comment faire étant donné que tous est configuré dans des fichiers xml statiques ???
    - Passer par des classes (et du code...) et non plus des annotations pour gérer la persistance ?

    Voila j'espère avoir été claire !

    Pour information : Je me sert du serveur d'application Jboss 4.2.2 GA, d'une base MySQL 5.0.22, du moteur de persistance Hibernate, et des EJB3

    Merci d'avance de vos réponse ou moins d'avoir lu jusqu'ici

  2. #2
    Membre du Club Avatar de Soronite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 82
    Points : 46
    Points
    46
    Par défaut
    J'ai continuer mon étude et ma recherche et je me suis dit qu'une procédure stockée ferait très bien l'affaire pour créer mes bases de données qui se base sur un model déjà existant de base de données!
    Pour "brancher" mes EJBs je me suis dit qu'il faudrait que je puisse modifier dans mon programme les propriétés du datasource qui est utilisé actuellement par mon unité de persistence.
    C'est à dire que j'utilise une unité de persistance déjà existante (dans mon "persistence.xml") qui se sert d'un datasource pointant vers la base model, et que lorsque j'ai besoin, je me déconnecte de cette base je change dynamiquement les données du datasource (surtout pas en dure dans le fichier datasource) puis je me reconnecte.

    Mais la question est comment faire ?? Si vous pouviez m'indiquer quelque piste .. Parce que la je patauge un peu sans trop savoir ou chercher pour exécuter une telle action !

  3. #3
    Membre du Club Avatar de Soronite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 82
    Points : 46
    Points
    46
    Par défaut
    Bon, sa pas eu l'aire de vous inspirer se post ....
    Bai moi j'ai continuer ma recherche.
    En lisant un bouquin que l'on ma prêter Java Persistence et Hibernate (très bon bouquin d'ailleurs pour la persistence, les annotations, Hibernate) et en lisant la doc Hibernate j'ai trouver comment faire. Enfaite il faut instancier sont propre "EntityManager", enfin plutot sont propre "Session" (implementation de "EntityManager" sous Hibernate). En initialisant les propriétés de Connexion, de mapping on arrive créer un context de persistance dynamiquement dans sont application. Pour se qui veulent un peu de code :
    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
     
    Configuration conf = new Configuration ();
    conf.addClass(chemin.de.Access.class);
    conf.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");
    conf.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
    conf.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/db");
    conf.setProperty("hibernate.connection.username", "root");
    conf.setProperty("hibernate.connection.password", "");
    conf.setProperty("hibernate.hbm2ddl.auto", "update");
    conf.setProperty("hibernate.order_updates", "true");
    SessionFactory sessions = conf.buildSessionFactory();
    Session session = sessions.openSession();
    Access access = new Access ();
    access.setIdGroup(3);
    access.setRightAdd(true);
    session.beginTransaction();
    session.save(access);
    session.getTransaction().commit();
    Avec se système vous ne pourrez par contre pas utiliser les annotations . Il faut créer de fichier de mapping xml externe . Voici le mien "chemin.de.Access.hbm.xml"" :
    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
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    	<class name="chemin.de.Access.Access">
    		<id column="access_id" name="id">
    			<generator class="native" />
    		</id>
    		<property column="right_write" generated="never" lazy="false"
    			name="rightWrite" type="boolean" />
    		<property column="right_read" generated="never" lazy="false"
    			name="rightRead" type="boolean" />
    		<property column="right_view" generated="never" lazy="false"
    			name="rightView" type="boolean" />
    		<property column="right_versioning" generated="never"
    			lazy="false" name="rightVersioning" type="boolean" />
    		<property column="right_add" generated="never" lazy="false"
    			name="rightAdd" type="boolean" />
    		<property column="right_del" generated="never" lazy="false"
    			name="rightDel" type="boolean" />
    		<property column="group_id" name="idGroup" type="long" />
    	</class>
    </hibernate-mapping>
    Vous trouverez tous les détails sur l'aide d'Hibernate.

    PS: Par contre j'ai essayer de créer mes fichiers de mapping via Hibernate tools et c'est pas trés concluant, il me créer bien le fichier mais me met la balise "class" mais rien dedans

    pS2 : A oui petit oublie il a fallu que je créer la base de données (Comme d'hab) mais aussi la table à la main pour que cela marche !

Discussions similaires

  1. Hibernate + plusieurs Bases de données.
    Par henpower dans le forum Hibernate
    Réponses: 3
    Dernier message: 17/10/2009, 13h19
  2. Plusieurs bases de données avec Hibernate
    Par khalid_kha dans le forum Hibernate
    Réponses: 7
    Dernier message: 14/08/2008, 13h36
  3. Réponses: 2
    Dernier message: 08/06/2007, 14h38
  4. [EJB3] plusieur base de donnée
    Par mbouzouita dans le forum Persistance des données
    Réponses: 8
    Dernier message: 24/01/2007, 21h12

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