Pessoal, criei uma aplicação via console para aprendizado do Hibernate versão 4.1.10
tive problemas iniciais por causa da maioria dos tutoriais serem de versões anteriores e na versão 4.0 algumas classes e métodos estão depreciados.
Quiz iniciar com o mapeamento com hbm.xml só que ao executar estava recebendo uma exceção de “Entidade Desconhecida” depois de fazer várias alterações nos arquivos de configuração e classes sem sucesso, partir para mapear a classe entidade por anotação e a aplicação foi executada com sucesso.
Fiquei com uma dúvida:Será que a partir da versão 4.0 o Hibernate só faz mapeamento por anotações?
Segundo a documentação da versão 4.x, ainda é possivel usar xml sim: http://docs.jboss.org/hibernate/orm/4.1/quickstart/en-US/html/ch02.html#hibernate-gsg-tutorial-basic-config
Outra dica, leia a documentação, nela você vai encontrar exemplos de como fazer as coisas.
Eles não seriam loucos em deixar só opção de fazer gambiarra nas entidades. Verifica se não falta configurar os resources no hibernate.cfg.xml.
Resources?
vejam como estão os arquivos xml´s:
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.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<mapping class="br.com.hibernate.modelo.produto.Produto"></mapping>
<mapping class="br.com.hibernate.modelo.fornecedor.Fornecedor"></mapping>
</session-factory>
</hibernate-configuration>
Produto.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="br.com.hibernate.modelo.produto.Produto" table="produto">
<id name="codigo">
<generator class="native"></generator>
</id>
<property name="nome"></property>
<property name="preco"></property>
</class>
</hibernate-mapping>
Algum erro?
Os arquivos de mapeamento (HBM).
No config:
Ou programaticamente:
SessionFactory sessionFactory = new Configuration()
.addResource("xxx/xxx/Produto.hbm.xml")
.buildSessionFactory();
No Hibernate do .NET tem uma forma que pega todos os mapeamentos de um “assembly” definido, no Java nunca usei algo similar para pacote, mas dá uma pesquisada.
Valeu javaflex, era isso mesmo! nas vídeo aulas que estava assistindo e em outros tutoriais não tinha este atributo “resource”! é bom porque abre a mente e entende melhor o assunto:
A classe HibernateUtil pega as configurações do hibernate.cfg.xml e cria uma Session, que é solicitada pelo DAO, enquanto hibernate.cfg.xml pega os mapeamentos das Entidades através do hbm.xml
Usando mapeamento hbm.xml ???
Não acha seria melhor fazer as anotações na classe?
[quote=adriano.braga83]Usando mapeamento hbm.xml ???
Não acha seria melhor fazer as anotações na classe?
[/quote]
Já parou para pensar que isso é gambiarra? É fato que é muito adotado pela comunidade e é mais produtivo, mas é gambiarra e confuso de “enxergar” as coisas depois de muito tempo. Por XML é chato? Demais, mas não tem outra forma além dessa sem esculhambar as entidades. NHibernate (.NET) e Mentabean (Java) a coisa é limpa por exemplo, mapeamento programático separado da entidade. Infelizmente Hibernate para Java ainda não tem isso, e eu não entendo como o melhor ORM do mercado para a maior plataforma de desenvolvimento ainda não tem isso. Era só “copiar/adaptar” do NHibernate, da mesma forma que o NHibernate foi todo “copiado/adaptado”.
[quote=Alexsandro Lopes]Pessoal, criei uma aplicação via console para aprendizado do Hibernate versão 4.1.10
tive problemas iniciais por causa da maioria dos tutoriais serem de versões anteriores e na versão 4.0 algumas classes e métodos estão depreciados.
Quiz iniciar com o mapeamento com hbm.xml só que ao executar estava recebendo uma exceção de “Entidade Desconhecida” depois de fazer várias alterações nos arquivos de configuração e classes sem sucesso, partir para mapear a classe entidade por anotação e a aplicação foi executada com sucesso.
Fiquei com uma dúvida:Será que a partir da versão 4.0 o Hibernate só faz mapeamento por anotações?
[/quote]
Gostaria de saber como voce fez isto, estou iniciando em hibernate, e não imagino como voce faria isto caso possa demonstra ficaria agradecido