//$Id: UtilDAO.java,v 1.8 2006/12/19 05:10:06 chaostone Exp $ /* * * Copyright c 2005-2009. * * Licensed under GNU LESSER General Public License, Version 3. * http://www.gnu.org/licenses * */ /******************************************************************************** * @author pippo * * MODIFICATION DESCRIPTION * * Name Date Description * ============ ============ ============ * pippo 2005-11-15 Created * ********************************************************************************/ package org.beanfuse.persist; import java.io.InputStream; import java.io.Serializable; import java.sql.Blob; import java.sql.Clob; import java.util.Collection; import java.util.List; import java.util.Map; import org.beanfuse.collection.page.Page; import org.beanfuse.collection.page.PageLimit; import org.beanfuse.model.Entity; import org.beanfuse.query.AbstractQuery; import org.hibernate.Criteria; import org.hibernate.Query; /** * hibernate dao 查询辅助类 * * @author chaostone * */ public interface EntityDao { /** * 列举给定实体的所有实例 * * @param entity * @return */ public List loadAll(Class entity); /** * 根据属性列举实体 * * @param entityClass * @param keyName * @param values * @return */ public List load(Class entityClass, String keyName, Object[] values); /** * 根据属性列举实体 * * @param entityClass * @param keyName * @param values * @return */ public List load(String entityName, String keyName, Object[] values); /** * * @param clazz * @param id * @return */ public Entity load(Class clazz, Serializable id); /** * * @param clazz * @param id * @return */ public Entity get(Class clazz, Serializable id); /** * 依据实体类的全名或简名加载对象 * * @param entityName * @param id * @return */ public Entity get(String entityName, Serializable id); /** * 执行查询 * * @param query * @return */ public List search(AbstractQuery query); /** * 命名查询 * * @param queryName * @param params * @param cacheable * @return */ public List searchNamedQuery(final String queryName, final Map params); /** * 命名查询 * * @param queryName * @param params * @param cacheable * @return */ public List searchNamedQuery(final String queryName, final Object[] params); /** * 支持缓存的命名查询 * * @param queryName * @param params * @param cacheable * @return */ public List searchNamedQuery(String queryName, Map params, boolean cacheable); /** * 直接查询 * * @param hql * @return */ public List searchHQLQuery(final String hql); /** * HQL查询 * * @param hql * @param params * @return */ public List searchHQLQuery(final String hql, final Map params); /** * HQL查询 * * @param hql * @param params * @return */ public List searchHQLQuery(final String hql, final Object[] params); /** * 支持缓存的HQL查询 * * @param queryName * @param params * @param cacheable * @return */ public List searchHQLQuery(String hql, final Map params, boolean cacheable); /** * 分页命名查询 * * @param queryName * @param params * @param limit * @return */ public Page paginateNamedQuery(final String queryName, final Map params, PageLimit limit); /** * 分页HQL查询 * * @param hql * @param params * @param limit * @return */ public Page paginateHQLQuery(final String hql, final Map params, PageLimit limit); /** * 对hibernate Criteria的分页支持 * * @param criteria * @param limit * @return */ public Page paginateCriteria(Criteria criteria, PageLimit limit); /** * 对hibernate query的分页支持 * * @param query * @param params * @param limit * @return */ public Page paginateQuery(Query query, Map params, PageLimit limit); /** * 执行HQL 进行更新或者删除 * * @param queryStr * @param argument * @return */ int executeUpdateHql(String hql, Object[] argument); /** * 执行HQL 进行更新或者删除 * * @param queryStr * @param argument * @return */ int executeUpdateHql(String hql, Map parameterMap); /** * 执行命名语句进行更新或者删除 * * @param queryStr * @param argument * @return */ int executeUpdateNamedQuery(String queryName, Map parameterMap); /** * 执行命名语句进行更新或者删除 * * @param queryStr * @param argument * @return */ int executeUpdateNamedQuery(String queryName, Object[] argument); /** * 保存单个或多个实体. * */ public void saveOrUpdate(Object obj); /** * 按照实体名称,保存单个或多个实体. * * @param entityName * @param obj */ public void saveOrUpdate(String entityName, Object obj); /** * 删除单个对象 * * @param entity */ public void remove(Object entity); /** * 删除集合内的所有对象 * * @param entities */ public void remove(Collection entities); /** * 批量删除对象 * * @param entityClass * (对象对应的类) * @param keyName * (得到对象的key) * @param values * (要修改的values的值集合) * @return 是否删除成功 */ public boolean remove(Class entityClass, String attr, Object[] values); /** * 批量删除对象 * * @param entityClass * (对象对应的类) * @param attr * (得到对象的key) * @param values * (要修改的ids的值集合) * @return 是否删除成功 */ public boolean remove(Class entityClass, String attr, Collection values); /** * 批量删除对象 * * @param entityClass * @param parameterMap * (取得对象的key的name和value对应的Map) * @return 是否删除成功 */ public boolean remove(Class entityClass, Map parameterMap); // Blob and Clob public Blob createBlob(InputStream inputStream, int length); public Blob createBlob(InputStream inputStream); public Clob createClob(String str); // 容器相关 public void evict(Object entity); void initialize(Object entity); void refresh(Object entity); }