Hibernate 3! Duvidas em Classes DAO

2 respostas
diogenesvit

Bom dia galera,

Sou iniciante em hibernate, andei pegando todos os tutoriais do google inclusive os do GUJ, e lendo a propria documentacao do hibernate…

Bem… a principio estou me baseando no tutorial mais simples que vi do proprio GUJ aonde se basea em criar a Classe Amigos e a AmigosDAO para me basear futuramente nas minhas classes DAO.

O problema é que o hibernate em que o tutorial se baseava era o hibernate 2 acredito eu, entao tive q fazer umas modificaçoes. Comparando outros tutoriais isolados para faze-la funcionar com o Hibernate 3. Tambem adaptei o conceito de uma classe Static para liberar a SessionFactory que consta na doc do hibernate.

Gostaria que pessoa mais experientes analizassem e me dessem sua opiniao se este é o melhor jeito, e/ou o jeito correto de se fazer!!!

Desde já agradeço atenção!!!

Segue o código!!!

import java.util.List;

import org.hibernate.*;

import org.hibernate.cfg.Configuration;

import util.HibernateUtil;

public class AmigoDAO{

private SessionFactory factory;

public AmigoDAO() {}

public void insert(Amigo amigo) throws Exception{

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

  Transaction tx=session.beginTransaction(); ;

  session.save(amigo);
  session.flush();
  tx.commit();
  session.close();

}

public java.util.List getList(String condicao) throws Exception{

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
  session.beginTransaction();

  List amigos = session.createQuery(condicao).list();

  session.getTransaction().commit();

  return amigos;

}

public Amigo retrieve(String pk) throws Exception{

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
  session.beginTransaction();

  Amigo amigo = (Amigo) session.load(Amigo.class, pk);

  return amigo;

}

public void delete(Amigo amigo) throws Exception{

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
  session.delete(amigo);
  session.flush();
  session.close();

}
}

2 Respostas

ze_kiefa

O melhor jeito vai depender da necessidade do seu projeto.
Em relação à forma de implementação, o pattern DAO está aí para ser utilizado!
Para você que está começando, a diferença principal entre as versões 2 e 3 do Hibernate é a utilização de Annotations (anotações) que substituem os arquivos XML de mapeamento das classes.

Alguns questionamentos:

  1. O modelo como está, independente do uso do Hibernate, satisfaz as suas necessidades?

  2. Você já sente segurança em trabalhar com Hibernate e já está familiarizado com conceitos como Mapeamento Objeto-Relacional (ORM)?

diogenesvit

Opa valeu,

Sobre annotations n li nada estou no hib basico mesmo

Bem… respondendo suas perguntas!!!

1- Para o aprendizado incial, sim a classe esta fazendo todas as operacoes que estou necessitando no momento
2- Já vi o mapeamento e li alguns exemplos de tutoriais porem tenho algumas duvidas.

A classe que listei acima esta funcionando, porem quero saber se é o melhor jeito! se nao tem codificacao redundate se o metodo retrieve principalmente esta legal!!! Se preciso criar um metodo e usar o metodo update ou posso simplesmente atualizar um objeto persistente com o meu metodo insert()?
Se é legal criar um DAO generico e utiliza-lo e se possivel uma classe DAO exemplo de alguem que trabalhar com hibernate!

Desde já agradeço!!!

Criado 9 de setembro de 2007
Ultima resposta 10 de set. de 2007
Respostas 2
Participantes 2