Pessoal, preciso criar UMA telinha de consulta para várias tabelas…
qual seria a melhor maneira? (quero usar JPA)…
a idéia é abrir a consulta, passando o pojo.class, ele já identificar qual a tabela a ser carregada… e retornar o item pesquisado
alguém ja fez?
[quote=MrDataFlex]Pessoal, preciso criar UMA telinha de consulta para várias tabelas…
qual seria a melhor maneira? (quero usar JPA)…
a idéia é abrir a consulta, passando o pojo.class, ele já identificar qual a tabela a ser carregada… e retornar o item pesquisado
alguém ja fez?[/quote]
Um DAO Genérico +/- igual esse?
[code]public class DAO {
// T = Type ou seja tipo
private Session session;
private Logger logger = Logger.getLogger(DAO.class);
// criado p/ pegar a classe q vai no método load e generics q nao permite
// chamar atributos e metodos
private Class classe;
public DAO(Session session, Class classe) {
this.session = session;
this.classe = classe;
}
@SuppressWarnings("unchecked")
public void save(T t) {
logger.info("salvando " + t);
session.saveOrUpdate(t);
}
@SuppressWarnings("unchecked")
public T load(Long id) {
logger.info("lendo " + classe + " id: "+id);
return (T) session.load(classe, id);
}
@SuppressWarnings("unchecked")
public void salveOuAtualiza(T t) {
session.saveOrUpdate(t);
}
public void deleta(T t) {
logger.info("deletando " + t);
session.delete(t);
}
@SuppressWarnings("unchecked")
public List<T> list() {
// Critéria API
Criteria criteria = getSession().createCriteria(classe);
criteria.addOrder(Order.asc("nome"));
return criteria.list();
}
// Criado p/ as outras classes conseguirem ver
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
@SuppressWarnings("unchecked")
public List<String> buscaNome(String buscaNome){
Criteria criteria = session.createCriteria(Dados.class);
criteria.add(Restrictions.ilike("nome", buscaNome + "%"));
criteria.addOrder(Order.asc("nome"));
criteria.setProjection(Projections.property("nome"));
return criteria.list();
}
}
[/code]
Nao ta tão genérico pq brinquei bastante, mas tem mta coisa genérica aí nessa classe