HibernateのXML設定ファイル “` hibernate.cfg.xml`は、パッケージの外にあるプロジェクトクラスパスのルートに常に置かれます。この構成ファイルを別のディレクトリに配置すると、次のエラーが発生することがあります。
Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found Exception in thread "main" java.lang.ExceptionInInitializerError at com.mkyong.persistence.HibernateUtil.buildSessionFactory(HibernateUtil.java:25) at com.mkyong.persistence.HibernateUtil.<clinit>(HibernateUtil.java:8) at com.mkyong.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.mkyong.persistence.HibernateUtil.buildSessionFactory(HibernateUtil.java:13) ... 2 more
Hibernateに他のディレクトリにある
hibernate.cfg.xml` "ファイルを探すには、デフォルトのHibernateの` SessionFactory`クラスを、
hibernate.cfg.xml` “ファイルパスを引数として
configure()
メソッド:
SessionFactory sessionFactory = new Configuration() .configure("/com/mkyong/persistence/hibernate.cfg.xml") .buildSessionFactory(); return sessionFactory;
HibernateUtil.java
ディレクトリ ”
/com/mkyong/persistence/
“から “hibernate.cfg.xml”をロードするための `HibernateUtil.java`の完全な例です。
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/mkyong/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(); } }
完了しました。