项目中hibernate.cfg.xml的位置? [英] Location of hibernate.cfg.xml in project?

查看:1093
本文介绍了项目中hibernate.cfg.xml的位置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  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);
返回新的Configuration()。configure()。buildSessionFactory();
} catch(Throwable ex){
//确保记录异常,因为它可能被吞噬
System.err.println(Initial SessionFactory creation failed。+ ex);
抛出新的ExceptionInInitializerError(ex);



public static SessionFactory getSessionFactory(){
return sessionFactory;


public static void shutdown(){
//关闭缓存和连接池
getSessionFactory()。close();
}

}

at line

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

我有错误


初始化SessionFactory创建
failed.org.hibernate.HibernateException:
C:\ Users \Nikolay_Tkachev\workspace\hiberTest\src\logic\hibernate.cfg.xml
未找到线程main中的异常
$ b $中的java.lang.ExceptionInInitializerError
logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:19)at
logic.HibernateUtil。(HibernateUtil。 java:9)在
logic.Main.main(Main.java:12)引起:
org.hibernate.HibernateException:
C:\ Users \Nikolay_Tkachev\workspace\\在
中找不到
org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:173)
at
org.hibernate.cfg.Configuration.configure(Configuration.j)中的
org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1947)
at logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:14)
... 2 more

这个错误的原因是什么,我该如何解决它? 解决方案

给出与您的项目相关的路径。



src 中创建一个名为 resources 的文件夹,然后把你的配置文件放在那里。

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

如果您检查您的代码

  Configuration configuration = new Configuration()。configure(C:\\ Users \\Nikolay_Tkachev\\\\\\\\\\\\\\\\\\\\\\\' \\logic\\hibernate.cfg.xml); 
返回新的Configuration()。configure()。buildSessionFactory();

在两行中,您将创建两个配置对象。



如果你写了,应该可以工作(没测试过),

  Configuration configuration = new Configuration()。configure (C:\\ Users \\ Nikolay_Tkachev \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' 
return configuration.buildSessionFactory();

但是它在服务器上部署后失败,因为您使用的是系统路径而不是项目相对路径。

I created a project with following structure:

HibernateUtil:

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            Configuration  configuration = new Configuration().configure( "C:\\Users\\Nikolay_Tkachev\\workspace\\hiberTest\\src\\logic\\hibernate.cfg.xml");
            return new Configuration().configure().buildSessionFactory();
        } 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();
    }

}

at line

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

I have error

Initial SessionFactory creation failed.org.hibernate.HibernateException: C:\Users\Nikolay_Tkachev\workspace\hiberTest\src\logic\hibernate.cfg.xml not found 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 not found 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

What is the reason for the error and how do I fix it?

解决方案

Give the path relative to your project.

Create a folder called resources in your src and put your config file there.

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

And If you check your code

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

In two lines you are creating two configuration objects.

That should work(haven't tested) if you write,

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

But It fails after you deploy on the server,Since you are using system path than project relative path.

这篇关于项目中hibernate.cfg.xml的位置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆