Olá a todos!
Tenho iniciado um estudo sobre java com o framework Hibernate e tenho me empenhado fazendo testes e aprendendo tanto a linguagem Java como a documentação do Hibernate… Ainda que muito superficial.
Bem, em uma de minhas atividades onde tenho implementado um modelo dum sistema para uma gravadora de musicas, logo no início sofre com um erro que me parec muito pertinente. Talvez seja só uma coisinha e tal, mas tá me dando dor de cabeça :roll:
Pois bem, utilizando o Netbean criei uma interface básica para inserção, busca, etc no banco de dados. Porém, na hora em que clico em salvar aparece o seguinte na saída:
1 [AWT-EventQueue-0] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.4.0.GA
12 [AWT-EventQueue-0] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1
15 [AWT-EventQueue-0] INFO org.hibernate.cfg.Environment - loaded properties from resource hibernate.properties: {hibernate.pool_size=10, hibernate.connection.driver_class=com.mysql.jdbc.Driver, hibernate.dialect=org.hibernate.dialect.MySQLDialect, hibernate.format_sql=true, hibernate.connection.username=root, hibernate.hbm2ddl.auto=update, hibernate.connection.url=jdbc:mysql://localhost/prova3poo, hibernate.bytecode.use_reflection_optimizer=false, hibernate.show_sql=true, hibernate.connection.password=****}
17 [AWT-EventQueue-0] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
23 [AWT-EventQueue-0] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
80 [AWT-EventQueue-0] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.1.0.GA
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at br.prova3poo.thiago.dao.Dao.inserir(Dao.java:22)
at br.prova3poo.thiago.visao.VisaoCantor.jBSalvarActionPerformed(VisaoCantor.java:247)
at br.prova3poo.thiago.visao.VisaoCantor.access$100(VisaoCantor.java:24)
at br.prova3poo.thiago.visao.VisaoCantor$2.actionPerformed(VisaoCantor.java:168)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)
at java.awt.Component.processMouseEvent(Component.java:6203)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:5968)
at java.awt.Container.processEvent(Container.java:2105)
at java.awt.Component.dispatchEventImpl(Component.java:4564)
at java.awt.Container.dispatchEventImpl(Container.java:2163)
at java.awt.Component.dispatchEvent(Component.java:4390)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
at java.awt.Container.dispatchEventImpl(Container.java:2149)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4390)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)
at java.awt.EventQueue.access$000(EventQueue.java:96)
at java.awt.EventQueue$1.run(EventQueue.java:608)
at java.awt.EventQueue$1.run(EventQueue.java:606)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
at java.awt.EventQueue$2.run(EventQueue.java:622)
at java.awt.EventQueue$2.run(EventQueue.java:620)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
CONSTRUÍDO COM SUCESSO (tempo total: 22 minutos 27 segundos)
Justamente guando eu aciono o botão salvar associado ao evento jBSalvarActionPerformed implementado desta forma:
[code] private void jBSalvarActionPerformed(java.awt.event.ActionEvent evt) {
Cantor cantor=new Cantor();
cantor.setNome(jTNome.getText());
cantor.setCpf(jTCpf.getText());
cantor.setRg(jTRg.getText());
cantor.setEmail(jTEmail.getText());
Dao<Cantor> dao = new Dao<Cantor>();
dao.inserir(cantor);
JOptionPane.showMessageDialog(null, "Dados gravados com sucesso!");
dao.fechar();
}
[/code]
Além disso, tenho percebido que o erro faz referência a classe Dao que você pode ver logo abaixo:
[code]public class Dao {
private Session sessao=HibernateUtilidades.getSessoes();
public void inserir(T tipo) {
sessao.beginTransaction();
sessao.save(tipo);
sessao.getTransaction().commit();
}
public void fechar(){
sessao.close();
}
public void atualizar(T t){
sessao.beginTransaction();
sessao.update(t);
sessao.getTransaction().commit();
}
public void deletar(T t){
sessao.beginTransaction();
sessao.delete(t);
sessao.getTransaction().commit();
}
public List recuperarTodos(T t){
return sessao.createQuery("from " + t.getClass().getName()).list();
}
}[/code]
E acho que seria importante verificar a classe encarregada de carregar as tabelas (classes) no BD:
[code]public class HibernateUtilidades {
private static AnnotationConfiguration configAnotacoes = new AnnotationConfiguration();
private static Session sessoes;
public static void atualizaSchema(){
getConfigAnotacoes().addAnnotatedClass(br.prova3poo.thiago.modelo.Cantor.class);
getConfigAnotacoes().addAnnotatedClass(br.prova3poo.thiago.modelo.Compositor.class);
getConfigAnotacoes().addAnnotatedClass(br.prova3poo.thiago.negocio.Gravadora.class);
getConfigAnotacoes().addAnnotatedClass(br.prova3poo.thiago.negocio.Musica.class);
SchemaExport export = new SchemaExport(getConfigAnotacoes());
export.create(true, true);
sessoes = getConfigAnotacoes().buildSessionFactory().openSession();
}
public static AnnotationConfiguration getConfigAnotacoes() {
return configAnotacoes;
}
public static Session getSessoes() {
return sessoes;
}
}
[/code]
E como ponto de partida deixo a baixo o esquema geral desse projeto abaixo pra você observar:
Finalmente resta minhas dúvidas: O que está errado? Como posso solucionar esse problema?
Agradeço desde já quem puder me ajudar!