Discussion: Hibernate + HSQLDB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : avril 2003
    Messages : 509
    Points : 568
    Points
    568

    Par défaut Hibernate + HSQLDB

    Slt
    Je suis actuellement sur un appli utilisant Hibernate et HSQLDB ca va probabelement vous semblez ridicule mais impossible de faire en sorte que HSQLDB utilise un fichier, du coup il fait tout en memoire mais des que l'appli se termine j'ai perdu mes données.

    Ma question est donc la suivante :

    Comment configurer Hibernate pour qu'il se connecte a HSQLDB en mode FILE ?
    UML avec VIOLET

  2. #2
    Modérateur
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 765
    Points : 12 898
    Points
    12 898

    Par défaut

    Pour faire encore plus joli démarre HSQLDB en mode server (qui ira écrire dans des fichiers accessoirement)

    Il te suffir pour ça d'instancier ton server dans ton appli même:

    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
     
    try {
                hsqlServer =(Server) Class.forName("org.hsqldb.Server").newInstance();
            } catch (InstantiationException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IllegalAccessException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (ClassNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            hsqlServer.setDatabasePath(0,"adresse/base");  //l'adresse physique des fichiers
            hsqlServer.setDatabaseName(0,"NomBase");      //le nom de la base au sens server
            hsqlServer.start();
    et pour l'arrêter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            hsqlServer.stop();
    puis pour accéder à ta base avec hibernate:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
            <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
            <property name="connection.url">jdbc:hsqldb:hsql://localhost/NomBase</property>
            <property name="connection.username">sa</property>
            <property name="connection.password"></property>
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2005
    Messages : 7 431
    Points : 21 297
    Points
    21 297

    Par défaut

    et si tu tiens à employer HSQL sans le mode serveur, il faut qu'avant de terminer le programme, tu envoie une requête SQL SHUTDOWN sur la base HSQL, pour que les données soient correctement écrites dans les fichiers

    Mais, c'est plus propre d'utiliser le mode serveur si tu pars sur Hibernate.

  4. #4
    Membre habitué Avatar de xv-mnt
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : juillet 2005
    Messages : 142
    Points : 178
    Points
    178

    Par défaut

    Extrait du persistence.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	<properties>
    			<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />
    <!--
    			<property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost/db_unit_test" />
    -->
    			<property name="hibernate.connection.url" value="jdbc:hsqldb:target/db/da;shutdown=true;hsqldb.applog=1" />
    			<property name="hibernate.connection.username" value="sa" />
    			<property name="hibernate.connection.password" value="" />
    			<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
    			<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
    			<property name="hibernate.connection.autocommit" value="false"/>
    			<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>		
    		</properties>
    En rouge, le parametre en mode serveur, en vert en mode in-memory.
    Tout le monde savait que c'était impossible à faire. Puis un jour quelqu'un est arrivé qui ne le savait pas, et il le fit (Winston Churchill)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : avril 2003
    Messages : 509
    Points : 568
    Points
    568

    Par défaut

    Je ne connaissais pas la possibilité de demarrer la base via le code , c'est la "classe".

    En tout cas j'arrive à garder mes données maintenant , MERCI .
    UML avec VIOLET

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : mai 2007
    Messages : 116
    Points : 93
    Points
    93

    Par défaut

    Citation Envoyé par FreshVic Voir le message
    Je ne connaissais pas la possibilité de demarrer la base via le code , c'est la "classe".

    En tout cas j'arrive à garder mes données maintenant , MERCI .
    je doit faire une application avec JEE Je dois utiliser une BD j’ai choisi Hsqldb mon problème est ce que avec Hsql seulement et eclipse on peut crée une application avec interface qui réagit avec la BD (écrire/lire) parce que j’en ai aucune idée sur les outils alors si vous pouvez m’aidez pour accentuer mes recherches sur ces outils
    je connais un peu java et sql c’est tout
    un problème sans solution est un problème mal posé. Albert Einstein

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/07/2012, 16h48
  2. Passage de données Struts-Hibernate-HSQLDB
    Par debloc dans le forum Struts
    Réponses: 3
    Dernier message: 29/07/2011, 01h00
  3. hibernate et HSQLDB
    Par loicmidy dans le forum Hibernate
    Réponses: 2
    Dernier message: 04/03/2009, 21h35
  4. Hibernate et HSQLDB - pb de performances
    Par tatia34 dans le forum Hibernate
    Réponses: 1
    Dernier message: 05/09/2007, 17h29
  5. Hibernate Eclipse HSQLDB
    Par tlilim dans le forum Hibernate
    Réponses: 8
    Dernier message: 12/08/2007, 16h07

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