项目中hibernate.cfg.xml的位置是什么?

13 浏览
0 Comments

项目中hibernate.cfg.xml的位置是什么?

我创建了一个具有以下结构的项目:

enter image description here

HibernateUtil:

public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();
    private static SessionFactory buildSessionFactory() {
        try {
            // 从 hibernate.cfg.xml 创建 SessionFactory
            Configuration  configuration = new Configuration().configure( "C:\\Users\\Nikolay_Tkachev\\workspace\\hiberTest\\src\\logic\\hibernate.cfg.xml");
            return new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // 确保记录异常,因为它可能被忽略
            System.err.println("初始 SessionFactory 创建失败。" + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    public static void shutdown() {
        // 关闭缓存和连接池
        getSessionFactory().close();
    }
}

在以下行出现错误

Configuration  configuration = new Configuration().configure( "C:\\Users\\Nikolay_Tkachev\\workspace\\hiberTest\\src\\logic\\hibernate.cfg.xml");

我遇到了错误

初始 SessionFactory 创建失败。org.hibernate.HibernateException: C:\Users\Nikolay_Tkachev\workspace\hiberTest\src\logic\hibernate.cfg.xml 未找到 Exception in thread "main" java.lang.ExceptionInInitializerError at logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:19) at logic.HibernateUtil.(HibernateUtil.java:9) at logic.Main.main(Main.java:12) Caused by: org.hibernate.HibernateException: C:\Users\Nikolay_Tkachev\workspace\hiberTest\src\logic\hibernate.cfg.xml 未找到 at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:173) at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1947) at org.hibernate.cfg.Configuration.configure(Configuration.java:1928) at logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:14) ... 2 more

错误的原因是什么,我该如何修复?

0
0 Comments

问题:hibernate.cfg.xml在项目中的位置是什么?

原因:在使用Hibernate框架时,需要提供一个名为"hibernate.cfg.xml"的配置文件,该文件包含了数据库连接信息、映射文件等配置信息。然而,如果没有明确指定该文件的位置,就需要确定它所在的位置。

解决方法:将"hibernate.cfg.xml"文件放置在项目的src文件夹下(src\hibernate.cfg.xml),然后使用以下代码初始化配置:

Configuration configuration = new Configuration();          
sessionFactory = configuration.configure().buildSessionFactory();

这样,Hibernate框架将会自动在src文件夹下查找并加载"hibernate.cfg.xml"文件,从而成功初始化配置并建立SessionFactory。

0
0 Comments

问题:hibernate.cfg.xml在项目中的位置是什么?

原因:将hibernate.cfg.xml文件放在"src"文件夹下无法正常工作,需要将其放在以下位置才有效:

[项目文件夹]\src\main\resources\hibernate.cfg.xml。

解决方法:在[项目文件夹]/src/main/java/com/abc/xyz/filename.java文件中使用以下代码:

new Configuration().configure().buildSessionFactory().openSession();

此外,在hibernate.cfg.xml文件中添加以下代码:

<mapping resource="hibernate/Address.hbm.xml" />

<mapping resource="hibernate/Person.hbm.xml" />

将上述hbm.xml文件放置在以下位置:

[项目文件夹]/src/main/resources/hibernate/Address.hbm.xml

[项目文件夹]/src/main/resources/hibernate/Person.hbm.xml

以上结构可正常工作。

0
0 Comments

问题原因:在项目中定位 hibernate.cfg.xml 文件的位置时出现了问题。在把文件放入 src 文件夹下的 resources 文件夹中后,代码无法找到该文件。

解决方法:将配置文件放入项目的 resources 文件夹中,并使用项目相对路径进行配置。

文章内容如下:

在项目中定位 hibernate.cfg.xml 文件的位置时,我们需要注意一些问题。如果我们将该文件放入项目的 resources 文件夹中,我们需要使用项目相对路径来配置。

首先,我们需要在 src 文件夹下创建一个名为 resources 的文件夹,并将配置文件放入其中。接下来,我们可以使用以下代码进行配置:

configuration.configure("/resources/hibernate.cfg.xml");

但是,如果我们仔细检查代码,会发现在两行中我们创建了两个 configuration 对象。这样做是不必要的。为了解决这个问题,我们可以使用以下代码:

Configuration configuration = new Configuration().configure("C:\\Users\\Nikolay_Tkachev\\workspace\\hiberTest\\src\\logic\\hibernate.cfg.xml");
return configuration.buildSessionFactory();

这样就可以正常工作了(未经测试)。但是,当我们部署到服务器上后,这种做法就会失败,因为我们使用的是系统路径而不是项目相对路径。

因此,为了解决这个问题,我们可以将资源文件放入项目的 resources 文件夹中。这样做不是必需的,但是是一个良好的实践。

在使用 Eclipse 进行开发时,如果将 hibernate.cfg.xml 文件放入 src 文件夹中,代码可以正常工作。但是,当我将该文件放入 src 下的 resources 文件夹中时,代码无法找到该文件,抛出异常。为了解决这个问题,我们需要将配置文件放入项目的 resources 文件夹中,并使用项目相对路径进行配置。

0