Classe padrão para o CRUD

3 respostas
P
Achei que essa classe resolveria meu problema, mas será que resolveria mesmo? Gostaria de estar no Form Escola e gravar,deletar,atualizar e listar somente escola. Se tiver no Form professor, idem para professior. Abaixo minha Interface e minha classe DaoImplementaTudo.
package br.com.prime.dao;

import java.util.List;
import br.com.prime.modelo.*;

public interface DAO<T> {
    public void Inserir(T t);
    public void Deletar(T t);
    public void Atualizar(T t);
    public List<T> lista();
}
import br.com.prime.dao.*;
import br.com.prime.modelo.*;
import br.com.prime.util.*;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class EscolaDao implements DAO{
   
    @Override
    public void Deletar(Object obj) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.delete(obj);
        t.commit();       
    }
    @Override
    public void Atualizar(Object obj) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.update(obj);
        t.commit();       
    }
    @Override
    public void Inserir(Object obj) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.save(obj);
        t.commit();
       
    }
    @Override
    public List lista() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        List lista = session.createQuery("from Escola").list();
        t.commit();
        return lista;
    }
}

3 Respostas

orlandocn

procure pelo padrao activerecord, ele resolve estes problemas com polimorfismo.

Polverini

na tua classe de implementação faz algo assim

public class EscolaDao implements DAO<Escola>{

    @Override
    public void Inserir(Escola t) {
        Seu Método
    }

    @Override
    public void Deletar(Escola t) {
        Seu Método
    }

    @Override
    public void Atualizar(Escola t) {
        Seu Método
    }

    @Override
    public List<Escola> lista() {
        Seu Método
    }
    
}
P
Ficou assim agora minhas classes.
import br.com.prime.modelo.Escola;
import br.com.prime.dao.DAO;
import br.com.prime.dao.EscolaDao;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

@ManagedBean
@SessionScoped
public class EscolaControle {
   
    private Escola escola;
    private DataModel listaEscola;
   
    public DataModel getEscolaAtiva(){
        List&lt;Escola&gt; lista = new EscolaDao().list();
        listaEscola = new ListDataModel(lista);
        return listaEscola;
    }
   
    public Escola getEscola() {
        return escola;
    }

    public void setEscola(Escola escola) {
        this.escola = escola;
    }
   
    public String preparInserirEscola(){
        escola = new Escola();
        return "gerenciarEscola";
    }
    public String DeletarEscola(){
        Escola escolatemp = (Escola)(listaEscola.getRowData());
        DAO dao = new EscolaDao();
        dao.Deletar(escolatemp);
        return "index";
    }
   
    public String prepararAlterarEscola(){
        escola = (Escola)(listaEscola.getRowData());
        return "gerenciarEscola";
    }
   
    public String adicionarEscola(){
        DAO dao = new EscolaDao();
        dao.Inserir(escola);
        return "index";       
    }
    public String alterarEscola(){
        DAO dao = new EscolaDao();
        dao.Atualizar(escola);
        return "index";
    }
}
import br.com.prime.dao.*;
import br.com.prime.modelo.*;
import br.com.prime.util.*;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class EscolaDao implements DAO&lt;Escola&gt;{
   
    @Override
    public List&lt;Escola&gt; list() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        List lista = session.createQuery("from Escola").list();
        t.commit();
        return lista;
    }
    @Override
    public void Inserir(Escola escola) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.save(escola);
        t.commit();       
    }
    @Override
    public void Deletar(Escola escola) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.delete(escola);
        t.commit();
    }
    @Override
    public void Atualizar(Escola escola) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.update(escola);
        t.commit();           
    }
}
[code]
import java.util.List;
import br.com.prime.modelo.*;

public interface DAO&lt;T&gt; {
    public void Inserir(T t);
    public void Deletar(T t);
    public void Atualizar(T t);
    public List&lt;T&gt; list();
}

Agora só preciso testar isso. Terei que criar um xhtml com os campos e testar. Ainda to meio cru nisso. Esse xhtml não será o definitivo, pois receberei um e colocarei essa lógica nele. Mas eu ainda não fiz as configuraçoes do Hibernate, para conexão com o banco. Já tenho os drivers no meu ClassPath. Eu uso:
PostgreSql, Helios,Java 6, Hibernate/JPA,JSF 2.0 e Primefaces 2.2.1. Precisava acrescentar aí um DataGrid da Prime para carregar as escolas e outros. Isso é só meu começo com a ferramenta.

Criado 28 de abril de 2011
Ultima resposta 28 de abr. de 2011
Respostas 3
Participantes 3