Onde colocar hibernate.cfg.xml?
-
12-12-2019 - |
Pergunta
Meu projeto é assim:
/src/main/java
-thegamers
-app.java
-hibernateutil.java
alguém pode me dizer onde colocar o hibernate.cfg.xml?
porque eu estou recebendo este erro:
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
Solução
O arquivo de configuração hibernate.cfg.xml
precisa estar classpath
.
Isso pode ser feito de diferentes maneiras, dependendo do seu projeto.
Para um web-app GUERRA projeto (você estiver executando o programa em um Servlet container):colocando-a em
WEB-INF/classes
irá trabalhar como ficheirosWEB-INF/classes
são visíveis no classpath quando a aplicação está em execução no recipiente.Para um Maven-projeto de estilo (não executar o programa em um Servlet container):colocando-a em
/src/main/resources/
vai trabalharCaso contrário, tente a
src/
diretório.
Outras dicas
Eu estou usando o maven, e não funcionou para mim, até que eu ponha os hibernate.cfg.xml no src/main/resources
.
Na raiz do seu projeto: /src
(a leat como padrão)
Como saber se /src
é a fontes dir?
Quando você cria uma nova classe Java, ele está contido em um pacote (normalmente ele é chamado como o mesmo nome do diretório onde ele será criado).Assim, na sua classe declarion você pode ver algo como isto:
package foo;
class MyClass{
No padrão IDE definições, a classe deve encontradas embaixo /src/foo/MyClass.java
.Como você pode ver, neste cenário /src
atua como raiz fontes dir.
se ele não é projeto da web, em seguida, fazer explicitamente como que
new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()
Espero que isso possa ajudar
@SiB apontou um link(mkyong do web site).Explica-se bem lá.
O arquivo é supor para ir para a raiz do seu /src
dir, enquanto /src
não é implantado, tudo que é construído/copiados para WEB-INF/classes
que É implantado.O Hibernate precisa o cfg.xml
arquivo do classpath
o seu projeto para carregar as definições de configuração, o seu WEB-INF
dir não está na sua classpath
, então se você colocá-lo lá, você estaria esconder é a partir do modo de Hibernação e ele não iria funcionar.
Este thread iria dizer-lhe como colocar o hibernate.cfg.xml de qualquer caminho diferente.
Se você estiver usando o Eclipse, vá em Project -> Properties -> Java Build Path -> código Fonte.Você pode adicionar a nova pasta onde você colocou o arquivo, ou mova o arquivo para a pasta existente.
CMD+N/CTR+N, enquanto você está na Tag, será aberta uma caixa de diálogo, você tem a dubbel clique em Hibernar a pasta.Ele vai abrir uma lista de arquivos com o XML extenuation.Selecione o cfg.xml e clique em continuar, e quando você está feito!clique em concluir.Tag irá adicionar o nome da Classe, com a cfg.xml arquivo e mostra-lo em pasta SRC.GB
Lugar hibernate.cfg.xml
sob src/
pasta ou explicitamente mencionar o caminho no código como:
new Configuration.configure("path of hibernate.cfg.xml").buildsessionfactory()
tente colocá-lo em "src/main/resources
"directory.