Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package src.dao; import src.model.Veiculo; import java.util.List; import org.hibernate.*; import org.hibernate.criterion.Projections; import src.conexao.HibernateUtil; /** * * @author Jordan-PC */ public class VeiculoDAO { public void salvar(Veiculo veiculo) { Session sessao = null; Transaction transacao = null; try { //abre um sesso com o banco de dados. sessao = HibernateUtil.getSessionFactory().openSession(); //inicia um transacao transacao = sessao.beginTransaction(); //salva o usurio sessao.saveOrUpdate(veiculo); //confirma a transacao transacao.commit(); } catch (HibernateException e) { throw new ExceptionInInitializerError("No foi possvel inserir um veculo.Erro: " + e.getMessage()); } finally { try { //fecha a sessao com o banco de dados sessao.close(); } catch (Throwable e) { throw new ExceptionInInitializerError( "Erro ao fechar a operacao de veculo.Erro:" + e.getMessage()); } } } public void deletar(Veiculo veiculo) { Session sessao = null; Transaction transacao = null; try { //abre um sesso com o banco de dados. sessao = HibernateUtil.getSessionFactory().openSession(); //inicia um transacao transacao = sessao.beginTransaction(); //deleta o usurio sessao.delete(veiculo); //confirma a transacao transacao.commit(); } catch (HibernateException e) { throw new ExceptionInInitializerError("No foi possvel deletar um veculo.Erro: " + e.getMessage()); } finally { try { //fecha a sessao com o banco de dados sessao.close(); } catch (Throwable e) { throw new ExceptionInInitializerError( "Erro ao fechar a operacao de veculo.Erro:" + e.getMessage()); } } } @SuppressWarnings("unchecked") /** * * @return List<Usuario> * * Mtodo retorna uma lista de usuarios */ public List<Veiculo> listar() { Session sessao = null; Transaction transacao = null; Query consulta = null; List<Veiculo> resultado = null; try { //Abre uma sessao no banco de dados sessao = HibernateUtil.getSessionFactory().openSession(); //Inicia uma transacao //Mesmo na leitura bom manter o controle da transao - leia mais: http://www.inf.puc-rio.br/~rogcosta/inf1341/bd3-TransacoesEmAplicacoes.pdf transacao = sessao.beginTransaction(); /*Responsvel por montar consultas no Hibernate usando o padro HQL. O hibernate cria um nova linguagem HQL, a sintaxe similar ao SQL. Observe que, ao passarmos a instrucao SQL para o mtodo, no usamos a tradicional instrucao select * from contato, mas from Contato. Isso porque agora estamos lidando com objetos, e no mais linhas de resultado de uma consulta. Tanto que Contato, de from Contato, se refere nossa classe conforme mapeada no arquivo XML Mais informacoes: http://www.mkyong.com/hibernate/hibernate-queryexamples-hql/ */ consulta = sessao.createQuery("from Veiculo"); //Retorna lista de contatos resultado = consulta.list(); //Confirma a transacao transacao.commit(); //retona a lista de usuarios return resultado; } catch (HibernateException e) { throw new ExceptionInInitializerError( "No foi possvel selecionar os Veiculo.Erro: " + e.getMessage()); } finally { try { sessao.close(); } catch (Throwable e) { throw new ExceptionInInitializerError( "Erro ao fechar a operao consulta.Erro: " + e.getMessage()); } } } @SuppressWarnings("unchecked") /** * * @return List<Usuario> * * Mtodo retorna uma lista de Marcas */ public List<String> listarMarcas() { Session sessao = null; Transaction transacao = null; List resultado = null; try { //Abre uma sessao no banco de dados sessao = HibernateUtil.getSessionFactory().openSession(); transacao = sessao.beginTransaction(); resultado = sessao.createCriteria(Veiculo.class) .setProjection(Projections.projectionList().add(Projections.groupProperty("marca"))).list(); //Confirma a transacao transacao.commit(); //retona a lista de marcas return resultado; } catch (HibernateException e) { throw new ExceptionInInitializerError( "No foi possvel selecionar os Veiculo.Erro: " + e.getMessage()); } finally { try { sessao.close(); } catch (Throwable e) { throw new ExceptionInInitializerError( "Erro ao fechar a operao consulta.Erro: " + e.getMessage()); } } } @SuppressWarnings("unchecked") /* * Lista veculos por marca */ public List<Veiculo> listarVeiculosByMarca(String marca) { Session sessao = null; Transaction transacao = null; Query consulta = null; List<Veiculo> resultado = null; try { //Abre uma sessao no banco de dados sessao = HibernateUtil.getSessionFactory().openSession(); transacao = sessao.beginTransaction(); consulta = sessao.createQuery("from Veiculo where marca= :parametro"); consulta.setString("parametro", marca); //Retorna lista de contatos resultado = consulta.list(); //Confirma a transacao transacao.commit(); //retona a lista de usuarios return resultado; } catch (HibernateException e) { throw new ExceptionInInitializerError( "No foi possvel selecionar os Veiculo.Erro: " + e.getMessage()); } finally { try { sessao.close(); } catch (Throwable e) { throw new ExceptionInInitializerError( "Erro ao fechar a operao consulta.Erro: " + e.getMessage()); } } } /* * Busca um usurio pelo cdigo */ public Veiculo buscaVeiculo(int id) { Veiculo veiculo = null; Session sessao = null; Transaction transacao = null; Query consulta = null; try { //inicia a sessao sessao = HibernateUtil.getSessionFactory().openSession(); //inicia transacao transacao = sessao.beginTransaction(); //consulta o Usuario consulta = sessao.createQuery("from Veiculo where idveiculo= :parametro"); //atribui o valor do cdigo do usurio como parmetro da consulta HQL. consulta.setInteger("parametro", id); //Obtm um nico objeto da consulta veiculo = (Veiculo) consulta.uniqueResult(); //confirma transao transacao.commit(); return veiculo; } catch (HibernateException e) { throw new ExceptionInInitializerError("No foi possvel buscar o contato.Erro: " + e.getMessage()); } finally { try { sessao.close(); } catch (Throwable e) { throw new ExceptionInInitializerError( "Erro ao fechar a operao buscar. Erro: " + e.getMessage()); } } } }