[RESOLVIDO] erro configurar hibernate.cfg.xml

3 respostas
W

fiz todo um projeto usando o framework hibernate onde conecto um banco de dados postgres.
Essa conexão é configurada pelo arquivo hibernate.properties e o projeto funciona perfeitamente bem.
Quando substituo esse hibernate.properties pelo hibernate.cfg.xml o projeto não funciona, da um erro de dialética:

HTTP Status 500 -
exception 

javax.servlet.ServletException: Servlet execution threw an exception


root cause 

java.lang.ExceptionInInitializerError
	br.edu.hibernate.servlet.ListaFuncionarioServlet.service(ListaFuncionarioServlet.java:34)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 

org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
	org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:80)
	org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:62)
	org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:460)
	org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:155)
	org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
	org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
	org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	br.edu.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:15)
	br.edu.hibernate.servlet.ListaFuncionarioServlet.service(ListaFuncionarioServlet.java:34)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Gostaria de saber como fazer funcionar configurando pelo xml, já que pelo que andei lendo, há algumas configurações que não podem ser feitas pelo hibernate.properties. Sei que conexão a banco, pool de conexão e JNDI eu até consigo configurar pelo hibernate.properties, segundo a documentação oficial do hibernate, mas queria ver o xml funcionando para o caso de precisar algum dia configurar alguma outra api que só aceite pelo cfg.xml

3 Respostas

W

Ah, só para constar, estou configurando a dialética correta para minha conexão

esse é o meu hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password"></property>
		<property name="hibernate.connection.url">jdbc:postgresql://localhost/teste</property>
		<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
		<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialectt</property>

		<property name="hibernate.hbm2ddl.auto">update</property>

		<property name="show_sql">true</property>
		<property name="format_sql">true</property>

		<property name="connection.pool_size">10</property>
		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
 		<property name="hibernate.c3p0.min_size">1</property> 
 		<property name="hibernate.c3p0.max_size">20</property> 
		<property name="hibernate.c3p0.max_statements">0</property> 
		<property name="hibernate.c3p0.idle_test_period">100</property> 
		<property name="hibernate.c3p0.timeout">50</property>

		<mapping class="br.edu.hibernate.pojo.Produto" />

	</session-factory>
</hibernate-configuration>
W

Resolvi galera,

o problema era no minha fábrica de conexões.
Como a apostila que eu estava seguindo ensinava a configurar por hibernate.properties, ele fazia uma fábrica de conexões que relacionava o pojo à tabela via o próprio pojo, já no xml deve-se apontar a fábrica de conexão ao xml, basicamente a alteração que precisei fazer foi essa:
No meu HibernateUtil ( que foi o nomeque dei à minha fábrica de conexões, ou getConnection, como queiram):

a linha que faço a relação da tabela com o pojo é:
cfg.addAnnotatedClass(Produto.class);
já para buscá-la do xml fica:
cfg.configure("hibernate.cfg.xml"); para o xml criado dentro da pasta src,

o resto da getConetion é exatamente igual.

paulolimac

wjava:
Resolvi galera,

o problema era no minha fábrica de conexões.
Como a apostila que eu estava seguindo ensinava a configurar por hibernate.properties, ele fazia uma fábrica de conexões que relacionava o pojo à tabela via o próprio pojo, já no xml deve-se apontar a fábrica de conexão ao xml, basicamente a alteração que precisei fazer foi essa:
No meu HibernateUtil ( que foi o nomeque dei à minha fábrica de conexões, ou getConnection, como queiram):

a linha que faço a relação da tabela com o pojo é:
cfg.addAnnotatedClass(Produto.class);
já para buscá-la do xml fica:
cfg.configure("hibernate.cfg.xml"); para o xml criado dentro da pasta src,

o resto da getConetion é exatamente igual.

Boa resposta.

Utilizando pela o VRaptor, tive que fazer esta configuração para poder gerar as tabelas usando o xml ao invés do properties.

Talvez seja interessante que colocassem esta informação numa das apostilas ou no manual (busquei rapidamente pelos documentos - fj21, fj28, vrpator manual, e site e no próprio fórum e este foi o tópico em que encontrei a resposta).

Criado 25 de maio de 2012
Ultima resposta 5 de jul. de 2012
Respostas 3
Participantes 2