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.