public abstract class DaoGenericHibernate<T extends MyBaseEntity,
ID extends Serializable> extends
HibernateDaoSupport implements DaoGeneric<T, ID> {
private Class<T> persistentType;
public DaoGenericHibernate() {
this.persistentType = (Class<T>)
((
ParameterizedType) getClass().getGenericSuperclass())
.getActualTypeArguments()[0];
}
public List<T> findAll() {
final List<T> loadedEntities = getHibernateTemplate().loadAll(getPersistentType() );
return loadedEntities;
}
public T findById(Serializable id) {
T loadedEntity = (T) getHibernateTemplate().get(getPersistentType(), id);
return loadedEntity;
}
public void makeObjectPersistent(T entity) {
getHibernateTemplate().saveOrUpdate(entity);
}
public void makeObjectTransient(T entity) {
getHibernateTemplate().delete(entity);
}
public void flushSession() {
getHibernateTemplate().flush();
}
public void clear() {
getHibernateTemplate().clear();
}
public Class<T> getPersistentType() {
return this.persistentType;
}
public List<T> findEntityByNamedQuery (String queryName, Object[] values) {
List<T> result = getHibernateTemplate().findByNamedQuery(queryName, values);
return result;
}