Boa tarde, pessoal.
Estou comecando agora e gostaria de uma ajuda com o seguinte problema.
Erro que aparece no console.
5 [main] INFO org.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.2-Final
38 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.2-Final
41 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
48 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
58 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
238 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
245 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: hibernate.cfg.xml
245 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: hibernate.cfg.xml
393 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
400 [main] INFO org.hibernate.cfg.search.HibernateSearchEventListenerRegister - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
508 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.capitulo3.categoria.Categoria
589 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.capitulo3.categoria.Categoria on table categoria
706 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.capitulo3.filme.Filme
707 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.capitulo3.filme.Filme on table filme
727 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.capitulo3.midia.Midia
727 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.capitulo3.midia.Midia on table midia
730 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.capitulo3.cliente.Cliente
731 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.capitulo3.cliente.Cliente on table cliente
786 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.capitulo3.endereco.Endereco
786 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.capitulo3.endereco.Endereco on table endereco
801 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.capitulo3.locacao.Locacao
801 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.capitulo3.locacao.Locacao on table locacao
885 [main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: com.livro.capitulo3.cliente.Cliente.locacoes -> locacao
888 [main] INFO org.hibernate.cfg.AnnotationConfiguration - Hibernate Validator not found: ignoring
896 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Using Hibernate built-in connection pool (not for production use!)
896 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - Hibernate connection pool size: 20
896 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - autocommit mode: false
906 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost/locadora
906 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - connection properties: {user=root, password=****}
1275 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS: MySQL, version: 5.1.66
1275 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.21 ( Revision: ${bzr.revision-id} )
1303 [main] INFO org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.MySQLDialect
1318 [main] INFO org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions)
1320 [main] INFO org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
1321 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled
1321 [main] INFO org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled
1321 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch size: 15
1321 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled
1322 [main] INFO org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled
1322 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): enabled
1323 [main] INFO org.hibernate.cfg.SettingsFactory - Connection release mode: auto
1324 [main] INFO org.hibernate.cfg.SettingsFactory - Maximum outer join fetch depth: 2
1325 [main] INFO org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1
1325 [main] INFO org.hibernate.cfg.SettingsFactory - Generate SQL with comments: enabled
1326 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled
1326 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled
1326 [main] INFO org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
1328 [main] INFO org.hibernate.hql.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory
1328 [main] INFO org.hibernate.cfg.SettingsFactory - Query language substitutions: {}
1328 [main] INFO org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled
1328 [main] INFO org.hibernate.cfg.SettingsFactory - Second-level cache: enabled
1330 [main] INFO org.hibernate.cfg.SettingsFactory - Query cache: disabled
1330 [main] INFO org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
1330 [main] INFO org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled
1330 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled
1338 [main] INFO org.hibernate.cfg.SettingsFactory - Echoing all SQL to stdout
1339 [main] INFO org.hibernate.cfg.SettingsFactory - Statistics: enabled
1339 [main] INFO org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled
1340 [main] INFO org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo
1341 [main] INFO org.hibernate.cfg.SettingsFactory - Named query checking : enabled
1341 [main] INFO org.hibernate.cfg.SettingsFactory - Check Nullability in Core (should be disabled when Bean Validation is on): enabled
1382 [main] INFO org.hibernate.impl.SessionFactoryImpl - building session factory
1768 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured
Não foi possível inserir a categoria. Erro:No CurrentSessionContext configured!
Erro ao fechar operação de inserção. Mensagem:null
Não foi possível inserir a categoria. Erro:No CurrentSessionContext configured!
Erro ao fechar operação de inserção. Mensagem:null
Não foi possível inserir a categoria. Erro:No CurrentSessionContext configured!
Erro ao fechar operação de inserção. Mensagem:null
Não foi possível inserir a categoria. Erro:No CurrentSessionContext configured!
Erro ao fechar operação de inserção. Mensagem:null
Erro ao fechar operação de busca. Mensagem:null
Exception in thread "main" java.lang.NullPointerException
at com.livro.capitulo3.categoria.CategoriaDAO.buscaCategoria(CategoriaDAO.java:91)
at com.livro.capitulo3.locadora.Locadora.cadastraFilmes(Locadora.java:98)
at com.livro.capitulo3.locadora.Locadora.main(Locadora.java:29)
Segue as classes mencionadas no erro.
package com.livro.capitulo3.categoria;
import java.util.List;
import org.hibernate.*;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import com.livro.capitulo3.util.HibernateUtil;
public class CategoriaDAO {
private Session sessao;
private Transaction transacao;
public void salvar(Categoria categoria) {
try {
this.sessao = HibernateUtil.getSessionFactory().getCurrentSession();
this.transacao = this.sessao.beginTransaction();
this.sessao.save(categoria);
this.transacao.commit();
} catch (HibernateException e) {
System.out.println("Não foi possível inserir a categoria. Erro:"
+ e.getMessage());
} finally {
try {
if (this.sessao.isOpen()) {
this.sessao.close();
}
} catch (Throwable e) {
System.out
.println("Erro ao fechar operação de inserção. Mensagem:"
+ e.getMessage());
}
}
}
public void atualizar(Categoria categoria) {
try {
this.sessao = HibernateUtil.getSessionFactory().getCurrentSession();
this.transacao = this.sessao.beginTransaction();
this.sessao.update(categoria);
this.transacao.commit();
} catch (HibernateException e) {
System.out.println("Não foi possível alterar a categoria. Erro:"
+ e.getMessage());
} finally {
try {
if (this.sessao.isOpen()) {
this.sessao.close();
}
} catch (Throwable e) {
System.out
.println("Erro ao fechar operação de atualização. Mensagem:"
+ e.getMessage());
}
}
}
public void exlcuir(Categoria categoria) {
try {
this.sessao = HibernateUtil.getSessionFactory().getCurrentSession();
this.transacao = this.sessao.beginTransaction();
this.sessao.delete(categoria);
this.transacao.commit();
} catch (HibernateException e) {
System.out.println("Não foi possível excluir a categoria. Erro:"
+ e.getMessage());
} finally {
try {
if (sessao.isOpen()) {
this.sessao.close();
}
} catch (Throwable e) {
System.out
.println("Erro ao fechar operção de exclusão. Mensagem:"
+ e.getMessage());
}
}
}
public Categoria buscaCategoria(Integer codigo) {
Categoria categoria = null;
try {
this.sessao = HibernateUtil.getSessionFactory().getCurrentSession();
this.transacao = this.sessao.beginTransaction();
Criteria filtro = this.sessao.createCriteria(Categoria.class);
filtro.add(Restrictions.eq("categoria", codigo));
categoria = (Categoria) filtro.uniqueResult();
this.transacao.commit();
} catch (Throwable e) {
if (this.transacao.isActive()) {
this.transacao.rollback();
}
} finally {
try {
if (this.sessao.isOpen()) {
this.sessao.close();
}
} catch (Throwable e) {
System.out
.println("Erro ao fechar operação de busca. Mensagem:"
+ e.getMessage());
}
}
return categoria;
}
@SuppressWarnings("unchecked")
public List<Categoria> listar() {
List<Categoria> categorias = null;
try {
this.sessao = HibernateUtil.getSessionFactory().getCurrentSession();
this.transacao = this.sessao.beginTransaction();
Criteria filtro = this.sessao.createCriteria(Categoria.class);
categorias = filtro.list();
this.transacao.commit();
} catch (Throwable e) {
if (this.transacao.isActive()) {
this.transacao.rollback();
}
} finally {
try {
if (this.sessao.isOpen()) {
this.sessao.close();
}
} catch (Throwable e) {
System.out
.println("Erro ao fechar operação de listagem. Mensagem:"
+ e.getMessage());
}
}
return categorias;
}
}
[list]
As classes estao distribuidas em pacotes :
com.livro.capitulo3.categoria
com.livro.capitulo3.cliente
com.livro.capitulo3.consulta
com.livro.capitulo3.endereco
com.livro.capitulo3.filme
com.livro.capitulo3.locacao
com.livro.capitulo3.locadora
com.livro.capitulo3.midia
com.livro.capitulo3.util
Todas com classe DAO tbm.
[/list]
Segue as outras classes mencionadas no erro acima.
package com.livro.capitulo3.locadora;
import java.sql.Date;
import java.sql.Time;
import java.util.List;
import com.livro.capitulo3.categoria.Categoria;
import com.livro.capitulo3.categoria.CategoriaDAO;
import com.livro.capitulo3.cliente.Cliente;
import com.livro.capitulo3.cliente.ClienteDAO;
import com.livro.capitulo3.endereco.Endereco;
import com.livro.capitulo3.endereco.EnderecoDAO;
import com.livro.capitulo3.filme.Filme;
import com.livro.capitulo3.filme.FilmeDAO;
import com.livro.capitulo3.locacao.Locacao;
import com.livro.capitulo3.locacao.LocacaoDAO;
import com.livro.capitulo3.midia.Midia;
import com.livro.capitulo3.midia.MidiaDAO;
import com.livro.capitulo3.util.HibernateUtil;
/*
* Classe para testes do sistema da locadora.
*/
public class Locadora {
public static void main(String[] args) {
HibernateUtil.getSessionFactory().openSession();
Locadora locadora = new Locadora();
locadora.cadastraCategorias();
locadora.cadastraFilmes();
locadora.cadastraMidias();
EnderecoDAO enderecoDAO = new EnderecoDAO();
Endereco endereco = new Endereco();
ClienteDAO clienteDAO = new ClienteDAO();
Cliente cliente = new Cliente();
cliente.setCelular("([telefone removido]");
cliente.setNome("Ädalberto Laureano");
cliente.setTelefone("([telefone removido]");
cliente.setEmail("[email removido]");
cliente.setEndereco(endereco);
endereco.setBairro("Centro");
endereco.setCep("12345-000");
endereco.setCidade("Rio de Janeiro");
endereco.setComplemento("casa");
endereco.setNumero(new Integer(1));
endereco.setRua("Mem de Sá");
endereco.setUf("RJ");
endereco.setCliente(cliente);
clienteDAO.salvar(cliente);
enderecoDAO.salvar(endereco);
LocacaoDAO locacaoDAO = new LocacaoDAO();
Locacao locacao = new Locacao();
locacao.setDataDevolucao(new Date(System.currentTimeMillis()));
locacao.setDataEmprestimo(new Date(System.currentTimeMillis()));
locacao.setDataEmprestimo(new Date(System.currentTimeMillis()));
locacao.setObservacao("Devolução no final de semana");
locacao.setHoraEmprestimo(new Time(System.currentTimeMillis()));
locacao.setCliente(cliente);
MidiaDAO midiaDAO = new MidiaDAO();
Midia midia = (Midia) midiaDAO.buscamidia(new Integer(1));
locacao.setMidia(midia);
locacaoDAO.salvar(locacao);
System.out.println("Cadastros Gerados com Sucesso!");
}
public void cadastraCategorias() {
// Criando as categorias dos filmes
String categorias[] = { "Aventura", "Ação", "Comédia", "Romance" };
Categoria categoria = null;
CategoriaDAO categoriaDAO = new CategoriaDAO();
for (int i = 0; i < 4; i++) {
categoria = new Categoria();
categoria.setDescricao(categorias[i]);
categoriaDAO.salvar(categoria);
}
}
@SuppressWarnings("deprecation")
public void cadastraFilmes() {
CategoriaDAO categoriaDAO = new CategoriaDAO();
String[] filmesDescricao = { "Senhor dos Aneis", "Transformers",
"Act of Valor", "Armaggedoon" };
// Aqui subtraimos o ano de lançamento do filme de 1900, para gravamor o
// ano correto no banco.
Date[] filmeAnoProducao = { new Date(2001 - 1900, 11, 19),
new Date(2007 - 1900, 6, 20), new Date(2012 - 1900, 10, 22),
new Date(2000 - 1900, 3, 23) };
FilmeDAO filmeDAO = new FilmeDAO();
Filme filme = null;
for (int i = 0; i < 4; i++) {
filme = new Filme();
filme.setDescricao(filmesDescricao[i]);
filme.setAno(filmeAnoProducao[i]);
filme.setCategoria(categoriaDAO.buscaCategoria(i + 1));
filmeDAO.salvar(filme);
}
}
public void cadastraMidias() {
Midia midia = null;
Filme filme = null;
MidiaDAO midiaDAO = new MidiaDAO();
FilmeDAO filmeDAO = new FilmeDAO();
List<Filme> resultado = filmeDAO.listar();
for (int i = 0; i < 4; i++) {
midia = new Midia();
filme = (Filme) resultado.get(i);
midia.setFilme(filme);
midia.setInutlizada("N");
midiaDAO.salvar(midia);
}
}
}
Desde já agradeço…