Le fichier de configuration XML d’Hibernate «` hibernate.cfg.xml` »est toujours placé à la racine du chemin de classe de votre projet, en dehors de tout package. Si vous placez ce fichier de configuration dans un autre répertoire, vous pouvez rencontrer le message d’erreur suivant:
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
Pour demander à Hibernate de rechercher votre fichier «` hibernate.cfg.xml` »dans un autre répertoire, vous pouvez modifier la classe` SessionFactory` par défaut de Hibernate en transmettant comme argument le chemin du fichier «` hibernate.cfg.xml` » configure () méthode:
SessionFactory sessionFactory = new Configuration() .configure("/com/mkyong/persistence/hibernate.cfg.xml") .buildSessionFactory(); return sessionFactory;
HibernateUtil.java
Exemple complet dans
HibernateUtil.java
, pour charger«
hibernate.cfg.xml
» à partir du répertoire «
/com/mkyong/persistence/
».
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(); } }
Terminé.