我有新的spring-boot项目。我使用gradle作为构建管理器和Eclpice IDE。我想使用hibernate并尝试从hibernate.cfg.xml文件获取配置,但得到
org.hibernate.HibernateException:找不到/hibernate.cfg.xml
我将此文件存储在资源文件夹中,我也尝试将其放入META-INF文件夹。
文件夹结构:
HibernateUtil.java:
public class HibernateUtil {
private static SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory()
{
try
{
if (sessionFactory == null)
{
sessionFactory = new Configuration().configure().buildSessionFactory();
}
return sessionFactory;
} catch (Throwable ex)
{
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();
}
}
答案 0 :(得分:0)
如果要读取资源目录中的文件,则需要使用classloder来获取文件。
静态方法
HibernateUtil.class.getClassLoader().getResource("hibernate.cfg.xml").getFile();
非静态方法
getClass().getClassLoader().getResource("hibernate.cfg.xml").getFile();
如果资源位于resources
的任何子目录中,则在获取资源时为文件夹路径添加前缀
获取META-INF目录中的资源的示例
getResource("META-INF/hibernate.cfg.xml");
但是春季启动自动配置,只需在pom.xml
中添加依赖项并在application.properties
中提供JPA相关属性
答案 1 :(得分:0)
如果您的应用程序是Web服务,则应将hibernate.cfg.xml放在WEB-INF floder中。如果您的应用程序是客户端服务,则应将hibernate.cfg.xml放在src包中。