[Hibernate] Cách load file hibernate.cfg.xml từ một thư mục khác

File cấu hình XML của Hibernate “hibernate.cfg.xml” thường được đặt ở thư mục gốc của project classpath, bên ngoài của bất kì package nào. Nếu cho file cấu hình vào thư mục khác, sẽ gặp lỗi bên dưới:

Code:
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
Để cho Hibernate biết phải tìm flie hibernate.cfg.xml trong thư mục khác, có thể thay đổi class SessionFactory mặc định của Hibernate bằng cách chuyển đường dẫn “hibernate.cfg.xml” thành một tham số vào phương thức configure().

Java:
SessionFactory sessionFactory = new Configuration()
.configure("/com/mkyong/persistence/hibernate.cfg.xml")
.buildSessionFactory();

return sessionFactory;
HibernateUtil.java
Code đầy đủ trong HibernateUtil.java, để load “hibernate.cfg.xml” từ thư mục “/com/mkyong/persistence/“.

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

}
Hoàn thành.


Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau :D

Bài viết tham khảo tại: https://mkyong.com/hibernate/how-to-load-hibernate-cfg-xml-from-different-directory/
 

Bình luận