package br.com.doctors.dao.util;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.transform.ResultTransformer;
/***
*
* @author Guilherme
*
*/
public class DaoImpl<T> implements Dao<T> {
private final Session session;
private final Class<T> classe;
public DaoImpl(Session session, Class<T> classe) {
this.session = session;
this.classe = classe;
}
@Override
public void adiciona(T t) {
session.save(t);
}
@Override
public void remove(T t) {
session.delete(t);
}
@Override
public void atualiza(T t) {
session.merge(t);
}
@SuppressWarnings("unchecked")
@Override
public List<T> listaTudo() {
return session.createCriteria(classe).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
}
@SuppressWarnings("unchecked")
@Override
public T carrega(Serializable id) {
return (T) session.get(classe, id);
}
public Session getSession() {
return session;
}
}