開発者ドキュメント

別のディレクトリからhibernate.cfg.xmlをロードする方法

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();
    }

}

完了しました。

モバイルバージョンを終了