Dónde colocar hibernate.cfg.xml?
(9)
CMD + N / CTR + N mientras está en Eclips, se abrirá un cuadro de diálogo allí donde debe hacer clic en la carpeta Hibernar. Abrirá una lista de archivos con la atenuación XML. Seleccione cfg.xml y haga clic en continuar y ¡cuando haya terminado! haga clic en terminar. Eclips ahora agregará el nombre de clase con el archivo cfg.xml y lo mostrará debajo de la carpeta SRC. GB
Mi proyecto es así:
/src/main/java
-thegamers
-app.java
-hibernateutil.java
¿alguien me puede decir dónde colocar el hibernate.cfg.xml?
porque estoy recibiendo este error:
Initial SessionFactory creation failed.org.hibernate.HibernateException: hibernate.cfg.xml not found
Exception in thread "main" java.lang.ExceptionInInitializerError
at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
at thegamers.HibernateUtil.<clinit>(HibernateUtil.java:8)
at thegamers.App.main(App.java:15)
Caused by: org.hibernate.HibernateException: hibernate.cfg.xml not found
at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:2149)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2130)
at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
... 2 more
Coloque hibernate.cfg.xml
en src/
folder o mencione explícitamente la ruta en el código como:
new Configuration.configure("path of hibernate.cfg.xml").buildsessionfactory()
En la raíz de su proyecto: /src
(al menos como predeterminado)
¿Cómo saber si /src
es el directorio de fuentes?
Cuando crea una nueva clase Java, está contenida en un paquete (normalmente se llama como el mismo nombre del directorio donde se creó). Entonces, en tu declaración de clase puedes ver algo como esto:
package foo;
class MyClass{
En la configuración IDE por defecto, la clase debe encontrarse en /src/foo/MyClass.java
. Como puede ver, en este escenario /src
actúa como el directorio de fuentes raíz.
Es lo mismo para cualquier otro momento que necesite un archivo visible en el classpath. El archivo de configuración hibernate.cfg.xml
debe estar en classpath
.
Esto se puede lograr de diferentes maneras, dependiendo de su proyecto.
Para un proyecto WAR de aplicación web (está ejecutando el programa en un contenedor Servlet): colocarlo en
WEB-INF/classes
funcionará como archivos enWEB-INF/classes
son visibles en el classpath cuando la aplicación se ejecuta en contenedor.Para un proyecto estilo Maven (que no ejecuta el programa en un contenedor Servlet): colocarlo en
/src/main/resources/
funcionaráDe lo contrario, intente en el directorio
src/
.
Estoy usando maven, y no funcionó para mí hasta que puse hibernate.cfg.xml en src/main/resources
.
Se supone que el archivo debe ir a la raíz de su directorio /src
, mientras que /src
no se implementa, todo en él se genera / copia a WEB-INF/classes
que se implementa. Hibernate necesita el archivo cfg.xml
en el classpath
de su proyecto para cargar sus configuraciones, su directorio WEB-INF
no está en su classpath
, por lo que si lo pusiera allí, estaría escondiéndolo de Hibernate y no lo haría. no funciona
Este thread le diría cómo cargar hibernate.cfg.xml desde cualquier ruta diferente.
Si está utilizando Eclipse, vaya a Proyecto -> Propiedades -> Ruta de compilación de Java -> Fuente. Puede agregar la nueva carpeta donde colocó el archivo o mover el archivo a la carpeta existente.
intente colocarlo en el directorio " src/main/resources
".
si no es un proyecto web, explícitamente así
new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()
Espero que esto pueda ayudar
@SiB señaló un enlace (sitio web de mkyong). Se explica bien allí.