package com.dbw.core.dao.hibernate;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.dbw.core.dao.IDAO;
import com.dbw.core.dao.page.PaginationSupport;
public abstract class DAOImpl extends HibernateDaoSupport implements IDAO {
private boolean cacheQueries = false;
private String queryCacheRegion;
public void setCacheQueries(boolean cacheQueries)
throws DataAccessException {
this.cacheQueries = cacheQueries;
}
public void setQueryCacheRegion(String queryCacheRegion)
throws DataAccessException {
this.queryCacheRegion = queryCacheRegion;
}
public Serializable save(final Object entity) throws DataAccessException {
return getHibernateTemplate().save(entity);
}
public void persist(final Object entity) throws DataAccessException {
getHibernateTemplate().save(entity);
}
public void update(final Object entity) throws DataAccessException {
getHibernateTemplate().update(entity);
}
public void delete(final Object entity) throws DataAccessException {
getHibernateTemplate().delete(entity);
}
public Object load(final Class entity, final Serializable id)
throws DataAccessException {
return getHibernateTemplate().load(entity, id);
}
public Object get(final Class entity, final Serializable id)
throws DataAccessException {
return getHibernateTemplate().get(entity, id);
}
public List findAll(final Class entity) throws DataAccessException {
return getHibernateTemplate().find("from " + entity.getName());
}
public List findByNamedQuery(final String namedQuery)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(namedQuery);
}
public List findByNamedQuery(final String query, final Object parameter)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(query, parameter);
}
public List findByNamedQuery(final String query, final Object[] parameters)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(query, parameters);
}
public List findByNamedQueryAndNamedParam(final String query, final String[] parameters, final Object[] values)
throws DataAccessException {
return getHibernateTemplate().findByNamedQueryAndNamedParam(query, parameters, values);
}
public List find(final String query) throws DataAccessException {
return getHibernateTemplate().find(query);
}
public List find(final String query, final Object parameter)
throws DataAccessException {
return getHibernateTemplate().find(query, parameter);
}
public PaginationSupport findPageByCriteria(
final DetachedCriteria detachedCriteria) throws DataAccessException {
return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE,
0);
}
public PaginationSupport findPageByCriteria(
final DetachedCriteria detachedCriteria, final int startIndex)
throws DataAccessException {
return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE,
startIndex);
}
public PaginationSupport findPageByCriteria(
final DetachedCriteria detachedCriteria, final int pageSize,
final int startIndex) throws DataAccessException {
return (PaginationSupport) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria = detachedCriteria
.getExecutableCriteria(session);
int totalCount = ((Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult())
.intValue();
criteria.setProjection(null);
criteria
.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
List items = criteria.setFirstResult(startIndex)
.setMaxResults(pageSize).list();
PaginationSupport ps = new PaginationSupport(items,
totalCount, pageSize, startIndex);
return ps;
}
}, true);
}
public List findAllByCriteria(final DetachedCriteria detachedCriteria)
throws DataAccessException {
return (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria = detachedCriteria
.getExecutableCriteria(session);
return criteria.list();
}
}, true);
}
public int getCountByCriteria(final DetachedCriteria detachedCriteria)
throws DataAccessException {
Integer count = (Integer) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria = detachedCriteria
.getExecutableCriteria(session);
return criteria.setProjection(Projections.rowCount())
.uniqueResult();
}
}, true);
return count.intValue();
}
public void saveOrUpdate(Object entity) throws DataAccessException {
this.getHibernateTemplate().saveOrUpdate(entity);
}
public List queryByExample(Object entity) throws DataAccessException {
return this.getHibernateTemplate().findByExample(entity);
}
public PaginationSupport findAll(final Class clazz, final int startIndex,
final int pageSize) throws DataAccessException {
return (PaginationSupport) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria = session.createCriteria(clazz);
int totalCount = ((Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult())
.intValue();
criteria.setProjection(null);
List items = criteria.setFirstResult(startIndex)
.setMaxResults(pageSize).list();
PaginationSupport ps = new PaginationSupport(items,
totalCount, pageSize, startIndex);
return ps;
}
}, true);
}
}
import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.dbw.core.dao.IDAO;
import com.dbw.core.dao.page.PaginationSupport;
public abstract class DAOImpl extends HibernateDaoSupport implements IDAO {
private boolean cacheQueries = false;
private String queryCacheRegion;
public void setCacheQueries(boolean cacheQueries)
throws DataAccessException {
this.cacheQueries = cacheQueries;
}
public void setQueryCacheRegion(String queryCacheRegion)
throws DataAccessException {
this.queryCacheRegion = queryCacheRegion;
}
public Serializable save(final Object entity) throws DataAccessException {
return getHibernateTemplate().save(entity);
}
public void persist(final Object entity) throws DataAccessException {
getHibernateTemplate().save(entity);
}
public void update(final Object entity) throws DataAccessException {
getHibernateTemplate().update(entity);
}
public void delete(final Object entity) throws DataAccessException {
getHibernateTemplate().delete(entity);
}
public Object load(final Class entity, final Serializable id)
throws DataAccessException {
return getHibernateTemplate().load(entity, id);
}
public Object get(final Class entity, final Serializable id)
throws DataAccessException {
return getHibernateTemplate().get(entity, id);
}
public List findAll(final Class entity) throws DataAccessException {
return getHibernateTemplate().find("from " + entity.getName());
}
public List findByNamedQuery(final String namedQuery)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(namedQuery);
}
public List findByNamedQuery(final String query, final Object parameter)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(query, parameter);
}
public List findByNamedQuery(final String query, final Object[] parameters)
throws DataAccessException {
return getHibernateTemplate().findByNamedQuery(query, parameters);
}
public List findByNamedQueryAndNamedParam(final String query, final String[] parameters, final Object[] values)
throws DataAccessException {
return getHibernateTemplate().findByNamedQueryAndNamedParam(query, parameters, values);
}
public List find(final String query) throws DataAccessException {
return getHibernateTemplate().find(query);
}
public List find(final String query, final Object parameter)
throws DataAccessException {
return getHibernateTemplate().find(query, parameter);
}
public PaginationSupport findPageByCriteria(
final DetachedCriteria detachedCriteria) throws DataAccessException {
return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE,
0);
}
public PaginationSupport findPageByCriteria(
final DetachedCriteria detachedCriteria, final int startIndex)
throws DataAccessException {
return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE,
startIndex);
}
public PaginationSupport findPageByCriteria(
final DetachedCriteria detachedCriteria, final int pageSize,
final int startIndex) throws DataAccessException {
return (PaginationSupport) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria = detachedCriteria
.getExecutableCriteria(session);
int totalCount = ((Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult())
.intValue();
criteria.setProjection(null);
criteria
.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
List items = criteria.setFirstResult(startIndex)
.setMaxResults(pageSize).list();
PaginationSupport ps = new PaginationSupport(items,
totalCount, pageSize, startIndex);
return ps;
}
}, true);
}
public List findAllByCriteria(final DetachedCriteria detachedCriteria)
throws DataAccessException {
return (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria = detachedCriteria
.getExecutableCriteria(session);
return criteria.list();
}
}, true);
}
public int getCountByCriteria(final DetachedCriteria detachedCriteria)
throws DataAccessException {
Integer count = (Integer) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria = detachedCriteria
.getExecutableCriteria(session);
return criteria.setProjection(Projections.rowCount())
.uniqueResult();
}
}, true);
return count.intValue();
}
public void saveOrUpdate(Object entity) throws DataAccessException {
this.getHibernateTemplate().saveOrUpdate(entity);
}
public List queryByExample(Object entity) throws DataAccessException {
return this.getHibernateTemplate().findByExample(entity);
}
public PaginationSupport findAll(final Class clazz, final int startIndex,
final int pageSize) throws DataAccessException {
return (PaginationSupport) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Criteria criteria = session.createCriteria(clazz);
int totalCount = ((Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult())
.intValue();
criteria.setProjection(null);
List items = criteria.setFirstResult(startIndex)
.setMaxResults(pageSize).list();
PaginationSupport ps = new PaginationSupport(items,
totalCount, pageSize, startIndex);
return ps;
}
}, true);
}
}