public abstract class AbstractHibernateDAOImpl<T extends Serializable, KeyType extends Serializable> extends HibernateDaoSupport { protected Class<T> domainClass = getDomainClass(); /** * Method to return the class of the domain object */ protected abstract Class<T> getDomainClass(); @SuppressWarnings("unchecked") public T load(KeyType id) { return (T) getHibernateTemplate().load(domainClass, id); } public void update(T t) { getHibernateTemplate().update(t); } public void save(T t) { getHibernateTemplate().save(t); } public void delete(T t) { getHibernateTemplate().delete(t); } @SuppressWarnings("unchecked") public List<T> getList() { return (getHibernateTemplate().find("from " + domainClass.getName() + " x")); } public void deleteById(KeyType id) { Object obj = load(id); getHibernateTemplate().delete(obj); } public void deleteAll() { getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { String hqlDelete = "delete " + domainClass.getName(); int deletedEntities = session.createQuery(hqlDelete).executeUpdate(); return null; } }); } public int count() { List list = getHibernateTemplate().find("select count(*) from " + domainClass.getName() + " x"); Integer count = (Integer) list.get(0); return count.intValue(); } @SuppressWarnings("unchecked") public List<T> findByExample(T exampleInstance, String[] excludeProperty) { Criteria crit = getSession().createCriteria(getPersistentClass()); Example example = Example.create(exampleInstance); for (String exclude : excludeProperty) { example.excludeProperty(exclude); } crit.add(example); return crit.list(); } @SuppressWarnings("unchecked") protected List<T> findByCriteria(Criterion... criterion) { Criteria crit = getSession().createCriteria(getPersistentClass()); for (Criterion c : criterion) { crit.add(c); } return crit.list(); } }
简化版Abstract Hibernate DAO
猜你喜欢
转载自blackbaby.iteye.com/blog/1020493
今日推荐
周排行