Persistência de Objetos com Hibernate (Parte 02)
Na postagem anterior vimos como mapear uma classe persistente e o como implementar o arquivo de configuração do Hibernate. Nesta postagem partiremos para a implementação do HibernateUtil que será a classe responsável por estabelecer uma sessão de conexão com a base de dados e criaremos a classe PesssoaDAO com as rotinas de banco referentes a classe de persistência PessoaVo.
Classe HibernateUtil
A classe HibernateUtil.java é disponibilizada com o Hibernate para ajudar o programador a criar os objetos Session responsáveis por fazer a persistência dos objetos. Segue a implementação da classe.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { //Objeto que constroi uma fábrica de sessões para ser utilizado nas transações sql public static final SessionFactory session = buildSession(); private static SessionFactory buildSession() { try{ //Cria um objeto utilizando as configurações obtidas no hibernate.cfg.xml Configuration cfg = new Configuration(); cfg.configure("hibernate.cfg.xml"); // Retorna SessionFactory com as configurações do hibernate.cfg.xml return cfg.buildSessionFactory(); }catch(Throwable b){ System.out.println("Erro ao Inicializar SessionFactory \n" + b); throw new ExceptionInInitializerError(); } } public static SessionFactory getSessionFactory(){ return session; } } |
Classes PessoaDAO e ContatoDAO
As classes PessoaDAO e ContatoDAO serão implementadas com as rotinas de banco. Seguem as mesma:
PessoaDAO.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
package br.com.hibernate.dao; import java.util.List; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; import br.com.hibernate.model.vo.PessoaVo; import br.com.hibernate.util.HibernateUtil; public class PessoaDAO { private Session session; public PessoaDAO() { session = HibernateUtil.getSessionFactory().openSession(); } public void encerrarSessao() { session.close(); } public boolean incluirPessoa(PessoaVo p) { try { System.out.println("Iniciando Rotina de Incluir"); session.save(p); session.beginTransaction().commit(); session.clear(); System.out.println("Dados Incluídos com Sucesso..."); return true; } catch (Exception e) { System.out.println("Erro ao Incluir os Dados"); e.printStackTrace(); } return false; } public boolean atualizarPessoa(PessoaVo p) { try { session.update(p); session.beginTransaction().commit(); session.clear(); System.out.println("Dados Atualizados com Sucesso..."); return true; } catch (Exception e) { e.printStackTrace(); } return false; } public boolean removerPessoa(PessoaVo p) { try { session.delete(p); session.beginTransaction().commit(); session.clear(); System.out.println("Dados Excluídos com Sucesso..."); return true; } catch (Exception e) { e.printStackTrace(); } return false; } public PessoaVo exibirPessoa(PessoaVo p) { try { return (PessoaVo) session.createCriteria(PessoaVo.class) .add(Restrictions.eq("id", p.getId())).uniqueResult(); } catch (Exception e) { e.printStackTrace(); } return null; } public List<PessoaVo> listarPessoas() { return session.createCriteria(PessoaVo.class).list(); } } |
ContatoDAO.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
package br.com.hibernate.dao; import java.util.List; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; import br.com.hibernate.model.vo.ContatoVo; import br.com.hibernate.util.HibernateUtil; public class ContatoDAO { private Session session; public ContatoDAO() { session = HibernateUtil.getSessionFactory().openSession(); } public boolean incluirContato(ContatoVo c) { try { session.save(c); session.beginTransaction().commit(); session.clear(); return true; } catch (Exception e) { e.printStackTrace(); } return false; } public boolean atualizarContato(ContatoVo c) { try { session.update(c); session.beginTransaction().commit(); session.clear(); return true; } catch (Exception e) { e.printStackTrace(); } return false; } public boolean removerContato(ContatoVo c) { try { session.delete(c); session.beginTransaction().commit(); session.clear(); return true; } catch (Exception e) { e.printStackTrace(); } return false; } public ContatoVo exibirContato(ContatoVo c) { try { return (ContatoVo) session.createCriteria(ContatoVo.class) .add(Restrictions.eq("id", c.getId())).uniqueResult(); } catch (Exception e) { e.printStackTrace(); } return null; } public List<ContatoVo> listarContatos() { return session.createCriteria(ContatoVo.class).list(); } } |
Agora além das classes persistentes, do hibernate.cfg.xml, do HibernateUtil temos também definidos os DAOs do nosso projeto. Na próxima postagem colocarei um main para teste da estrutura criada.