Boanoite
Galera, tou acompanha o livro Programao Java para web
estou com um problema no exercico de hibernate.
quando eu tento inserir os dados para o banco aparece esses erros
dei uma olhada pelo o que eu entendir o erro esta no mapeamento da classe no xml - hibernate.cfg.xml
que eh exatamente o endereco do meu package mais a classe
com.livro.capitulo3.crudxml
Contato
0 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.2-Final
16 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
16 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
16 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
109 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: hibernate.cfg.xml
109 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: hibernate.cfg.xml
Criaçao inicial do objeto SessionFactory falhou. Erro: org.hibernate.MappingNotFoundException: resource: com/livro/capitulo3/crudxml/Contato.hbm.xml not found
Erro ao fechar operaçao de inserçao. Mensagem: null
188 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : com/livro/capitulo3/crudxml/Contato.hbm.xml
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.livro.capitulo3.conexao.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
at com.livro.capitulo3.conexao.HibernateUtil.<clinit>(HibernateUtil.java:8)
at com.livro.capitulo3.crudxml.ContatoCrudXML.salvar(ContatoCrudXML.java:15)
at com.livro.capitulo3.crudxml.ContatoCrudXML.main(ContatoCrudXML.java:148)
Caused by: org.hibernate.MappingNotFoundException: resource: com/livro/capitulo3/crudxml/Contato.hbm.xml not found
at org.hibernate.cfg.Configuration.addResource(Configuration.java:665)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1679)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1647)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1626)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1600)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1520)
at com.livro.capitulo3.conexao.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
... 3 more
hibernate.cfg.xml
[code]<?xml version='1.0' encoding='utf-8'?>
org.hibernate.dialect.MySQL5InnoDBDialect
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/agenda
root
123
<!-- Usando as configurações do C3PO para pool de conexões -->
<property name="c3po.min_size">5</property>
<property name="c3po.max_size">20</property>
<property name="c3po.timeout">300</property>
<property name="c3po.max_statements">50</property>
<property name="c3po.idle_test_period">3000</property>
<!-- Configurações de debug -->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="generate_statistics">true</property>
<property name="use_sql_comments">true</property>
<mapping resource="com/livro/capitulo3/crudxml/Contato.hbm.xml"/>
</session-factory>
[/code]
Conexao
[code]package com.livro.capitulo3.conexao;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
return cfg.buildSessionFactory();
} catch (Throwable e) {
System.out
.println("Criaçao inicial do objeto SessionFactory falhou. Erro: " + e);
throw new ExceptionInInitializerError(e);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
package com.livro.capitulo3.conexao;
import org.hibernate.classic.Session;
public class ConectaHibernateMySQL {
public static void main(String[] args) {
Session sessao = null;
try {
sessao = HibernateUtil.getSessionFactory().openSession();
System.out.println("Conectou!!!");
} finally {
sessao.close();
}
}
}
Contato
[code]package com.livro.capitulo3.crudxml;
import java.sql.Date;
public class Contato {
private int codigo;
private String nome;
private String telefone;
private String email;
private Date dataCadastro;
private String observacao;
// get e set
[/code]
Crud
package com.livro.capitulo3.crudxml;
import java.util.List;
import java.sql.Date;
import org.hibernate.*;
import com.livro.capitulo3.conexao.HibernateUtil;
public class ContatoCrudXML {
public void salvar(Contato contato) {
Session sessao = null;
Transaction transacao = null;
try {
sessao = HibernateUtil.getSessionFactory().openSession();
transacao = sessao.beginTransaction();
sessao.save(contato);
transacao.commit();
} catch (HibernateException e) {
System.out.println("Nao foi possivel inserir o contato. Erro: "
+ e.getMessage());
} finally {
try {
sessao.close();
} catch (Throwable e) {
System.out
.println("Erro ao fechar operaçao de inserçao. Mensagem: "
+ e.getMessage());
}
}
}
public static void main(String[] args) {
ContatoCrudXML contatoCrudXML = new ContatoCrudXML();
String [] nomes = {"Jardel", "Kennedy", "Alexander"};
String [] fones = {"88895154", "01020304", "01020305"};
String [] emails = {"jardel@java.com", "kennedyMR@php.com", "alexanderVit@java.com"};
String [] observacoes = {"Novo Cliente", "Cliente em dia", "Ligar na quinta"};
Contato contato = null;
for(int i=0; i<nomes.length; i++)
{
contato = new Contato();
contato.setNome(nomes[i]);
contato.setTelefone(fones[i]);
contato.setEmail(emails[i]);
contato.setDataCadastro(new Date(System.currentTimeMillis()));
contato.setObservacao(observacoes[i]);
contatoCrudXML.salvar(contato);
}
}
}
Você adicionou o Contato.hbm.xml no mesmo pacote (diretório) que está a classe Contato?
Romarcio
muito obrigado cara, deu certo nao vir esse detalhe estava apenas no SRC e nao tinha colocado no diretorio do proprio package, tou começando agora com hibernate faltou experiencia, rsrs.
fica ae o topico para possiveis erros de alguem.
um abraço.
Olá Pessoal,
Meu problema é bem parecido com o do Jardel. Já tentei colocar hibernate.cfg.xml na mesma pasta, SRC, da minha classe, mas o problema persiste. Se alguém puder me ajudar, estou enviando o código abaixo:
[code]
[code]<?xml version="1.0" encoding="UTF-8"?>
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/biblioteca
root
165145jgr
1
org.hibernate.dialect.MySQLDialect
thread
org.hibernate.cache.NoCacheProvider
true
update
[/code]
Este é o erro que é retornado:
dez 09, 2014 6:09:27 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager
INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
dez 09, 2014 6:09:27 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.7.Final}
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Environment
INFO: HHH000206: hibernate.properties not found
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
dez 09, 2014 6:09:27 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity
WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: com.gontuseries.hibernate.Student_Info
Exception in thread “main” org.hibernate.MappingNotFoundException: resource: com.gontuseries.hibernate.Student_Info not found
at org.hibernate.cfg.Configuration.addResource(Configuration.java:769)
at org.hibernate.cfg.AnnotationConfiguration.addResource(AnnotationConfiguration.java:124)
at org.hibernate.cfg.AnnotationConfiguration.addResource(AnnotationConfiguration.java:47)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2257)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2229)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2209)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:214)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:47)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2162)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:202)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:47)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2077)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:184)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:47)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2056)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:178)
at com.gontuseries.hibernate.Main.main(Main.java:16)
Muito Obrigado.