Hibernate - dúvida de iniciante

5 respostas
doncopal

Amigos,

Estou começando no Hibernate e já neste exemplo básico não consigo rodar o programa. Já procurei por erros mas não sei o que é.

A classe

public class Produto {
	
	private String nome;
	private String marca;
	private Integer estoque;
	private double preco;
	private Integer id;

//construtor e getters and setters

O mapeamento

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

<hibernate-mapping>
	<class name="Produto" table="produto">
		<id name="id">
			<generator class="increment"/>
		</id>
		<property name="nome"/>
		<property name="marca"/>
		<property name="estoque"/>
		<property name="preco"/>
	</class>
</hibernate-mapping>

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">org.mysql.jdbc.Driver</property>	
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/locadora</property>	
		<property name="hibernate.connection.username">paullo</property>
		<property name="hibernate.connection.password">123456</property>
		<mapping resource="./produto/Produto.hbm.xml"/>		
	</session-factory>
</hibernate-configuration>

Testando

public class TesteProduto {

	public static void main(String[] args) {
		
		Session sessao = HibernateUtility.getSession(); //abrindo uma sessão
		Transaction transaction = sessao.beginTransaction(); //inicando uma transação
		
		Produto produto = new Produto();
		produto.setNome("Arroz Integral");
		produto.setMarca("Delícia");
		produto.setEstoque(50);
		produto.setPreco(3.75);
		
		sessao.save(produto);
		transaction.commit();
		sessao.close();
	}
}

O erro no console é este:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.InvalidMappingException: Could not parse mapping document from resource ./produto/Produto.hbm.xml
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:569)
	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)
	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
	at bd.HibernateUtility.<clinit>(HibernateUtility.java:11)
	at produto.TesteProduto.main(TesteProduto.java:11)
Caused by: org.hibernate.MappingException: class Produto not found while looking for property: id
	at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:74)
	at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:276)
	at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:401)
	at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:334)
	at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:273)
	at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:144)
	at org.hibernate.cfg.Configuration.add(Configuration.java:669)
	at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:504)
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:566)
	... 7 more
Caused by: java.lang.ClassNotFoundException: Produto
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
	at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:70)
	... 15 more
Exception in thread "main" java.lang.NullPointerException
	at bd.HibernateUtility.getSession(HibernateUtility.java:19)
	at produto.TesteProduto.main(TesteProduto.java:11)

Alguém pode me ajudar?

5 Respostas

julianoeustaquio
<mapping resource="./produto/Produto.hbm.xml"/>

A mensagem diz que não está conseguindo achar o arquivo acima especificado, verifique o caminho se esta correto.

Acho que dever ser
<mapping resource="produto/Produto.hbm.xml"/>
doncopal

Não, não é isso.

se coloco assim:

o erro é:
“org.hibernate.MappingNotFoundException: resource: /produto/Produto.hbm.xml not found”

doncopal

resolvido!

no mapeamento da classe Produto

faltava o nome do pacote

Falta de atenção!!

R

Boa tarde…eu preciso criar este arquivo para mapeamento, alem do hibernate.cfg.xml?Ou o codigo de fica dentro deste hibernate cfg?

Grande Abraço

Rodrigo Pereira

Sinner

É preciso criar um arquivo de mapeamento da classe que voce quer mapear e apontar dentro do hibernate.cfg.xml

Por exemplo:

voce cria uma classe chamada Pessoa, então vc precisa criar um xml de mapeamento dela, o Pessoa.hbm.xml e dentro do hibernate.cfg.xml vc aponta para esse hbm.

Qualquer dúvida pergunte.

ou tire por aqui

http://www.guj.com.br/content/articles/hibernate/intruducao_hibernate3_guj.pdf

:idea:

Criado 18 de janeiro de 2008
Ultima resposta 6 de jul. de 2009
Respostas 5
Participantes 4