rendered paste bodypackage com.zelfs.itbeganin.dao.impl;import java.io.Serializable;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.List;import org.hibernate.Criteria;import org.hibernate.LockMode;import org.hibernate.criterion.Criterion;import org.hibernate.criterion.Order;import org.hibernate.criterion.Projections;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.zelfs.itbeganin.BusinessObject;import com.zelfs.itbeganin.dao.BusinessObjectDao;public class BusinessObjectDaoHibernateImpl extends HibernateDaoSupport implements BusinessObjectDao { protected final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory .getLog(getClass()); public void save(BusinessObject entity) { getHibernateTemplate().save(entity); } public void saveOrUpdate(BusinessObject entity) { getHibernateTemplate().saveOrUpdate(entity); } public BusinessObject merge(BusinessObject entity) { return (BusinessObject) getHibernateTemplate().merge(entity); } public void delete(BusinessObject entity) { getHibernateTemplate().delete(entity); } public <T extends BusinessObject> void deleteById(Class<T> boClass, Serializable id) { delete(findById(boClass, id)); } @SuppressWarnings("unchecked") public <T extends BusinessObject> T findById(Class<T> boClass, Serializable id) { return (T) getSession().get(boClass, id); } @SuppressWarnings("unchecked") public <T extends BusinessObject> Iterator<T> iterate(Class<T> boClass) { return getHibernateTemplate().iterate("from " + boClass.getName()); } @SuppressWarnings("unchecked") public <T extends BusinessObject> List<T> list(Class<T> boClass) { Criteria criteria = getSession().createCriteria(boClass); return criteria.list(); } @SuppressWarnings("unchecked") public <T extends BusinessObject> List<T> list(Class<T> boClass, Order order) { Criteria criteria = getSession().createCriteria(boClass); criteria.addOrder(order); return criteria.list(); } public <T extends BusinessObject> int count(Class<T> boClass){ Criteria criteria = getSession().createCriteria(boClass); criteria.setProjection(Projections.rowCount()); return (Integer)criteria.list().get(0); } @SuppressWarnings("unchecked") public <T extends BusinessObject> List<T> list(Class<T> boClass, Criterion criterion, List<Order> orders) { Criteria criteria = getSession().createCriteria(boClass); criteria.add(criterion); for (Order order : orders) { criteria.addOrder(order); } List list = criteria.list(); return list; } public <T extends BusinessObject> List<T> list(Class<T> boClass, Criterion criterion, Order order) { List<Criterion> criterions = new ArrayList<Criterion>(); List<Order> orders = new ArrayList<Order>(); criterions.add(criterion); if (order!=null) { orders.add(order); } return list(boClass, criterion, orders); } public <T extends BusinessObject> List<T> list(Class<T> boClass, Criterion criterion) { return list(boClass, criterion, new ArrayList<Order>()); } public void delete(Collection<? extends BusinessObject> entities) { for (BusinessObject object : entities) { delete(object); } } public void save(Collection<? extends BusinessObject> entities) { for (BusinessObject object : entities) { save(object); } } public <T extends BusinessObject> Iterator<T> iterate(Class<T> boClass, int first, int count, String property, boolean ascending) { return list(boClass, first, count, property, ascending).iterator(); } @SuppressWarnings("unchecked") public <T extends BusinessObject> List<T> list(Class<T> boClass, int first, int count, String property, boolean ascending) { Criteria crit = getSession().createCriteria(boClass); Order order; if(ascending) order = Order.asc(property); else order = Order.desc(property); crit.addOrder(order); crit.setFirstResult(first); crit.setMaxResults(count); return crit.list(); } public void update(BusinessObject bo) { getHibernateTemplate().update(bo); } /** * Reattachs an object to an open session. */ public void reattach( BusinessObject model ){ getSession().refresh( model, LockMode.NONE ); } }