Problemas Locadora do Livro Programaçao java para web do Decio/Alexandre

5 respostas
A

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…

5 Respostas

A

O Banco usado é o MySQL, ja foram criadas todas as tabelas.

Ataxexe

Você está chamando a sessão corrente, mas não deve ter mapeado no hibernate como ele irá obter a sessão corrente. Talvez algo como isto no seu mapeamento resolva:

&lt;property name="hibernate.current_session_context_class"&gt;org.hibernate.context.ThreadLocalSessionContext&lt;/property&gt;

A

Desde já Obrigado…
Segue o hibernate.cfg.xml, para melhor esclarecimento

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<!-- Configuração da conexão com o banco MySQL e dialeto -->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost/locadora</property>
		<property name="connection.username">root</property>
		<property name="connection.password"></property>

		<!-- 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>

		<!-- Mapeando classes -->
		<mapping class="com.livro.capitulo3.categoria.Categoria" />
		<mapping class="com.livro.capitulo3.filme.Filme" />
		<mapping class="com.livro.capitulo3.midia.Midia" />
		<mapping class="com.livro.capitulo3.cliente.Cliente" />
		<mapping class="com.livro.capitulo3.endereco.Endereco" />
		<mapping class="com.livro.capitulo3.locacao.Locacao" />
	</session-factory>
</hibernate-configuration>
igor_ks

olha o erro:

Exception in thread "main" java.lang.NullPointerException at com.livro.capitulo3.categoria.CategoriaDAO.buscaCategoria(CategoriaDAO.java:91)

Qual codigo que ta nessa linha 91? Ele ta tentando acessar algum objeto nulo

A

Ae Fera “Ataxexe”

Obg era exatamente o que estava faltando, esta funcionando que é uma beleza…
Obg msmo…

Criado 19 de outubro de 2012
Ultima resposta 19 de out. de 2012
Respostas 5
Participantes 3