//$Id: EntityService.java,v 1.6 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.Serializable; 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.entity.ModelBuilder; import org.beanfuse.model.Entity; import org.beanfuse.query.AbstractQuery; import org.hibernate.Criteria; import org.hibernate.Query; /** * 服务工具类 * * @author chaostone * */ public interface EntityService { /** * 加载 * * @param clazz * @param id * @return */ public Entity load(Class clazz, Serializable id); /** * 得到某一属性的值在集合范围中的对象 * * @param entityClass * @param attr * @param values * @return List */ public List load(Class entityClass, String attr, Collection values); /** * 得到某一属性的值在集合范围中的对象 * * @param entityClass * @param attr * @param values * @return List */ public List load(Class entityClass, String attr, Object[] values); /** * 得到某一属性的值在集合范围中的对象 * * @param entityName * @param attr * @param values * @return List */ public List load(String entityName, String attr, Object[] values); /** * 根据属性单个值查询对象 * * @param entity * @param attr * @param value * @return */ public List load(Class entity, String attr, Object value); /** * 根据多个属性进行加载 * * @param entity * @param attrs * @param values * @return */ public List load(Class entity, String[] attrs, Object[] values); /** * 根据给定属性读取对象 * * @param entity * @return List */ public List load(Class entity, Map parameterMap); /** * 加载 * * @param entity * @return */ public List loadAll(Class entity); /** * 加载并实例化 * * @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); /** * 删除 * * @param entity */ public void remove(Object entity); /** * 批量删除 * * @param enities */ public void remove(Collection enities); /** * 批量删除对象 * * @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); /** * 批量更新对象 * * @param entityClass * @param attr * @param values * @param updateParams * @return */ public int update(Class entityClass, String attr, Object[] values, Map updateParams); /** * 批量更新对象 * * @param entityClass * @param attr * @param values * @param argumentName * @param argumentValue * @return */ int update(Class entityClass, String attr, Object[] values, String[] argumentName, Object[] argumentValue); /** * 保存或批量保存. * * @param entity */ public void saveOrUpdate(Object obj); /** * 指定实体名称,保存或批量保存. * * @param entityName * @param entity */ public void saveOrUpdate(String entityName, Object obj); /** * 在当前会话中清除现有对象 * * @param entity */ public void evict(Object entity); /** * 刷新对象 * * @param entity */ public void refresh(Object entity); /** * 强制初始化 * * @param entity */ public void initialize(Object entity); /** * 检查是否存在 * * @param entity * @param keyName * @param value * @return */ public boolean exist(Class entity, String keyName, Object value); /** * 检查是否存在 * * @param entityName * @param attr * @param value * @return */ public boolean exist(String entityName, String attr, Object value); /** * 检查是否存在 * * @param entity * @param attrs * @param values * @return */ public boolean exist(Class entity, String[] attrs, Object[] values); /** * 计数 * * @param entity * @param keyName * @param value * @return */ public int count(Class entity, String keyName, Object value); /** * 计数 * * @param entityName * @param keyName * @param value * @return */ public int count(String entityName, String keyName, Object value); /** * 计数 * * @param entityClass * @param attrs * @param values * @param countAttr * @return */ public int count(Class entityClass, String[] attrs, Object[] values, String countAttr); /** * 是否重复 * * @param clazz * @param id * @param codeName * @param codeValue * @return */ boolean duplicate(Class clazz, Long id, String codeName, Object codeValue); /** * 是否id重复 * * @param entityName * @param params * @return */ boolean duplicate(String entityName, Long id, Map params); public void setEntityDao(EntityDao entityDao); public EntityDao getEntityDao(); /** * 设置模型构建者 * * @param builder */ public void setModelBuilder(ModelBuilder builder); }