So laden Sie hibernate.cfg.xml aus einem anderen Verzeichnis
Die XML-Konfigurationsdatei im Ruhezustand "hibernate.cfg.xml
" wird außerhalb eines Pakets immer im Stammverzeichnis Ihres Projektklassenpfads abgelegt. Wenn Sie diese Konfigurationsdatei in einem anderen Verzeichnis ablegen, kann der folgende Fehler auftreten:
Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found Exception in thread "main" java.lang.ExceptionInInitializerError at com.example.persistence.HibernateUtil.buildSessionFactory(HibernateUtil.java:25) at com.example.persistence.HibernateUtil.(HibernateUtil.java:8) at com.example.common.App.main(App.java:11) Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:147) at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1405) at org.hibernate.cfg.Configuration.configure(Configuration.java:1427) at org.hibernate.cfg.Configuration.configure(Configuration.java:1414) at com.example.persistence.HibernateUtil.buildSessionFactory(HibernateUtil.java:13) ... 2 more
Um Hibernate zu bitten, in einem anderen Verzeichnis nach Ihrer Datei "hibernate.cfg.xml
" zu suchen, können Sie die Standardklasse "SessionFactory
" von Hibernate ändern, indem Sie den Dateipfad "hibernate.cfg.xml
" als Argument anconfigure()übergeben ) s Methode:
SessionFactory sessionFactory = new Configuration() .configure("/com/example/persistence/hibernate.cfg.xml") .buildSessionFactory(); return sessionFactory;
HibernateUtil.java
Vollständiges Beispiel inHibernateUtil.java
, um "hibernate.cfg.xml
" aus dem Verzeichnis "/com/example/persistence/" zu laden.
import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { // load from different directory SessionFactory sessionFactory = new Configuration().configure( "/com/example/persistence/hibernate.cfg.xml") .buildSessionFactory(); return sessionFactory; } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static void shutdown() { // Close caches and connection pools getSessionFactory().close(); } }
Erledigt.