-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: HibernateUtil: runtime-Einstellungen für versch. Datenbanken
PostPosted: Tue Mar 16, 2010 11:17 am 
Newbie

Joined: Tue Mar 02, 2010 5:39 am
Posts: 8
Guten Tag.
Ich habe mir nach dem Buch "Java Persitence mit Hibernate" von Bauer und Kind eine hibernateUtil erstellt.
Sinn und Zweck ist es ja, für eine Anwendung immer die selbe SessionFactory zu benutzen.

Ich möchte allerdings für meine Anwendung anbieten, mit verschiedenen Datanbanken zu arbeiten (zumindest mysql und hsqldb).

Wie kann ich also eine Sessionfactory implementieren, die aber zur Laufzeit ihre Einstellungen ändern, sprich neu laden kann?

Oder wenigstens verhindern, dass das ganze Programm abstürzt, wenn beim Start nach der vorhandenen Datenbank aus der letzten Sitzung gesucht wird.

Dies ist die hibernateUtil
Code:
package persistence;

import org.hibernate.*;
import org.hibernate.cfg.*;

/**
*
* @author markus
*/
public class HibernateUtil {
    private static SessionFactory sessionFactory;

    static{
   data.Einstellungen e = new data.Einstellungen();
   String fileEinstellungen = e.getFileEinstellungen();
   Configuration configuration = new Configuration();

   try{
       java.io.InputStreamReader reader = new java.io.FileReader(fileEinstellungen);
       java.util.Properties einstellungen = new java.util.Properties();
       einstellungen.load(reader);

       // Einstellungen aus dem Heimverzeichnis
       configuration.addProperties(einstellungen);

       // Mappings hinzufügen
       String[] mappings = e.getMappings();
       for (int i=0; i<mappings.length;i++){
      configuration.addResource(mappings[i]);
       }
   }catch (java.io.IOException ioEx){
       System.err.println("------------------------HibernateUtil{----------------------------------");
       System.out.println("Einstellungen noch nicht gesetzt!!! jetzt müsste was passieren.");
/*       javax.swing.JOptionPane.showMessageDialog(this.getFrame(),
          "Es wurden keine bestehenden Einstellungen gefunden. Bitte legen Sie eine neue Datenbank an oder wählen Sie eine bestehende aus.",
          "Warnung", javax.swing.JOptionPane.WARNING_MESSAGE);
*///       createNewDB();
       ioEx.printStackTrace();
       System.err.println("------------------------}HibernateUtil----------------------------------");
   }
   
   try{
       sessionFactory = configuration.buildSessionFactory();
       sessionFactory.getStatistics().setStatisticsEnabled(true);
   }catch (Throwable ex){
       throw new ExceptionInInitializerError(ex);
   }
    }

    /**
     * Erzeugt aus den Einstellungen eine SessionFactory
     * @return
     */
    public static SessionFactory getSessionFactory(){
   return sessionFactory;
    }

    /**
     * gibt die Statistik für die SessionFactory zurück im Format
     * org.hibernate.stat.Statistics
     * @return
     */
    public static org.hibernate.stat.Statistics getStatistics(){
   return getSessionFactory().getStatistics();
    }
    /**
     * Schließt die SessionFactory. Danach sind keine sessions mehr zu bekommen!
     */
    public static void shutdown(){
   // Caches und Verbindungspools schließen

   getSessionFactory().close();
    }
}


Top
 Profile  
 
 Post subject: Re: HibernateUtil: runtime-Einstellungen für versch. Datenbanken
PostPosted: Tue Mar 23, 2010 12:08 pm 
Newbie

Joined: Tue Mar 02, 2010 5:39 am
Posts: 8
Ok, ich hab es jetzt über einen Umweg gelöst.
Die Hauptanwendung (FrameView) arbeitet mit einer eigenen SessionFactory und deaktiviert ggf. die Programmmenüs, die die Datenbank brauchen.
Alle anderen Programmteile verwenden die HibernateUtil, auf die nur zugegriffen werden kann, wenn die Datenbank auch funktioniert.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.