读书人

最惯用的hibernate的接口和实现类

发布时间: 2012-11-14 10:12:19 作者: rapoo

最常用的hibernate的接口和实现类

import java.util.List;/** * @file_name BaseDao.java * @author janson_chang * @param <E> * @todo BaseDao */public interface BaseDao<E> {/** * 返回ID=ID的持久象 * @param id * @return E */public E get(String id);/** * 返回ID=ID的代理象 * @param id * @return E */public E load(String id);/** * 返回根字段的得到的持久象 * @param name * @param value * @return E */public E loadBy(String name, Object value);/** * 返回根字段的得到的持久象 * @param names * @param values * @return E */public E loadBy(String[] names, Object[] values);/** * 返回保存的象的ID * @param entity * @return String */public String save(E entity);/** * 更新象信息 * @param entity */public void update(E entity);/** * saveOrUpdate象信息 * @param entity */public void saveOrUpdate(E entity);/** * 除象 * @param entity */public void delete(E entity);/** * 返回所有的象信息list * @return List<E> */public List<E> listAll();/** * 根字段name和value返回象list * @param name * @param value * @return List<E> */public List<E> findBy(String name, Object value);/** * 根字段name,value返回象list * @param names * @param values * @return List<E> */public List<E> findBy(String[] names, Object[] values);/** * 更新内存中的 * @param entity */public void refresh(E entity);/** * 提交内存中的 */public void flush();/**     * 根据域对象类和条件查询对象查询一组域对象     * @param <T>     * @param clazz     * @param enhanceRule     * @return     */     List<E> query(Class clazz, EnhancedRule enhanceRule);/** * 执行SQL */public void executeSQL(String sql);/** * 执行HSQL,语句必须符合HSQL规范 */public List<E> queryHQL(String sql);/** * 执行本地SQL */public List<E> queryNQL(String sql);}


import java.lang.reflect.ParameterizedType;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.log4j.Logger;import org.hibernate.Criteria;import org.hibernate.HibernateException;import org.hibernate.criterion.Restrictions;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;/** * @file_name BaseDaoHibernateImpl.java * @author janson_chang * @param <E> * @todo BaseDaoHibernateImpl<E> */@SuppressWarnings("unchecked")public class BaseDaoHibernateImpl<E> extends HibernateDaoSupport implements BaseDao<E> {/** *  */protected Class<E> entityClass;/** *  */protected Logger log = Logger.getLogger(this.getClass());/** *  *  */public BaseDaoHibernateImpl() {super();entityClass = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];}/** *  * @param entityClassName * @throws ClassNotFoundException */public void setEntityClass(String entityClassName) throws ClassNotFoundException {this.entityClass = (Class<E>)Class.forName(entityClassName);}/** *  * @param entityClass  */public void setEntityClass(Class<E> entityClass) {this.entityClass = entityClass;}/** * 返回Criteria *  * @return Criteria */protected Criteria getCriteria() {Criteria criteria = getSession().createCriteria(entityClass);criteria.setCacheable(true);return criteria;}public void executeSQL(String sql){getSession().createSQLQuery(sql).executeUpdate();}public List<E> queryHQL(String sql){return getSession().createQuery(sql).list();}public List<E> queryNQL(String sql){return getSession().createSQLQuery(sql).list();}/** * @param entity */public void delete(E entity) {getHibernateTemplate().delete(entity);flush();}/** * @param name * @param value * @return List<E> *  */public List<E> findBy(String name, Object value) {return findBy(new String[] { name }, new Object[] { value });}/** * @param names * @param values * @return List<E> *  */@SuppressWarnings ("unchecked")public List<E> findBy(String[] names, Object[] values) {if (names == null || values == null || names.length != values.length) {throw new HibernateException("Illegal name and values" + names + ":" + values);}Criteria criteria = getCriteria();Map<String, Object> criteriaMap = new HashMap<String, Object>();for (int i = 0; i < names.length; i++) {criteriaMap.put(names[i], values[i]);}criteria.add(Restrictions.allEq(criteriaMap));criteria.setCacheable(true);return criteria.list();}/** *  */public void flush() {getHibernateTemplate().flush();}/** * @param id * @return E */public E get(String id) {return (E) getHibernateTemplate().get(entityClass, id);}/** * @return List<E> *  */public List<E> listAll() {return getHibernateTemplate().loadAll(entityClass);}/** * @param id * @return E */public E load(String id) {return (E) getHibernateTemplate().load(entityClass, id);}/** * @param name * @param value * @return E *  */public E loadBy(String name, Object value) {return loadBy(new String[] { name }, new Object[] { value });}/** * @param names * @param values * @return E *  */public E loadBy(String[] names, Object[] values) {E result = null;List<E> resultList = findBy(names, values);if (resultList.size() > 0) {result = resultList.get(0);}return result;}/** * @param entity *  */public void refresh(E entity) {getHibernateTemplate().refresh(entity);}/** * @param entity * @return String */public String save(E entity) {return (String) getHibernateTemplate().save(entity);}/** * @param entity *  */public void saveOrUpdate(E entity) {getHibernateTemplate().saveOrUpdate(entity);}/** * @param entity *  */public void update(E entity) {getHibernateTemplate().update(entity);}public List<E> query(Class clazz, EnhancedRule enhanceRule) {        if (enhanceRule == null) {            return listAll();        }        return enhanceRule.getCriteria (clazz, getSession (false)).list ();}}

读书人网 >软件架构设计

热点推荐