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.cfg.xml
”文件路径作为参数传递给configure()方法来修改默认的Hibernate的SessionFactory
类:
SessionFactory sessionFactory = new Configuration()
.configure("/com/mkyong/persistence/hibernate.cfg.xml")
.buildSessionFactory();
return sessionFactory;
HibernateUtil.java
HibernateUtil.java
完整示例,从目录“ / com / mkyong / persistence / ”中加载“ hibernate.cfg.xml
”。
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();
}
}
做完了
标签: 冬眠
翻译自: https://mkyong.com/hibernate/how-to-load-hibernate-cfg-xml-from-different-directory/