Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Location of hibernate.cfg.xml in project?

Tags:

I created a project with following structure:

enter image description here

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?

like image 386
gstackoverflow Avatar asked Sep 11 '13 08:09

gstackoverflow


2 Answers

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.

like image 53
Suresh Atta Avatar answered Oct 26 '22 09:10

Suresh Atta


Somehow placing under "src" folder didn't work for me.

Instead placing cfg.xml as below:

[Project Folder]\src\main\resources\hibernate.cfg.xml 

worked. Using this code

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

in a file under

    [Project Folder]/src/main/java/com/abc/xyz/filename.java 

In addition have this piece of code in hibernate.cfg.xml

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

Placed the above hbm.xml files under:

EDIT:

[Project Folder]/src/main/resources/hibernate/Address.hbm.xml [Project Folder]/src/main/resources/hibernate/Person.hbm.xml 

Above structure worked.

like image 39
Kisanagaram Avatar answered Oct 26 '22 11:10

Kisanagaram