【Java开源代码栏目提醒】:网学会员Java开源代码为您提供BaseDAOImpl.java参考,解决您在BaseDAOImpl.java学习中工作中的难题,参考学习。
package com.cownew.PIS.framework.bizLayer;
import java.io.Serializable;
import java.util.List;
import org.apache.commons.collections.KeyValue;
import org.hibernate.Query;
import org.hibernate.Session;
import com.cownew.PIS.framework.bizLayer.hibernate.HibernateConfig;
import com.cownew.PIS.framework.bizLayer.hibernate.HibernateDTOGenerator;
import com.cownew.PIS.framework.common.IBaseDAO;
import com.cownew.PIS.framework.common.IValueObject;
import com.cownew.PIS.framework.common.PagingQueryParam;
import com.cownew.PIS.framework.common.db.Selectors;
import com.cownew.PIS.framework.common.metaDataMgr.NameUtils;
import com.cownew.PIS.framework.common.utils.KeyValueList;
import com.cownew.PIS.framework.server.helper.ThreadVariableManager;
public abstract class BaseDAOImpl extends BizCtrlImpl implements IBaseDAO
{
public BaseDAOImpl()
{
super();
}
protected Session getSession()
{
return ThreadVariableManager.getInstance().getSession();
}
public String save(IValueObject valueObject)
{
validateVO(valueObject);
Serializable sr = getSession().save(valueObject);
getSession().flush();
return (String) sr;
}
/**
* 验证数据的合法性
* @param valueObject
* @
*/
protected void validateVO(IValueObject valueObject)
{
}
public void update(IValueObject valueObject)
{
validateVO(valueObject);
getSession().update(valueObject);
getSession().flush();
}
public void delete(IValueObject value)
{
getSession().delete(value);
getSession().flush();
}
public void delete(String pk)
{
Object obj = getSession().load(getPersistObjectClass(), pk);
delete((IValueObject) obj);
}
public IValueObject loadByPK(String id, Selectors selectors)
{
IValueObject object = (IValueObject) getSession().load(
getPersistObjectClass(), id);
IValueObject dto = null;
if (selectors == null)
{
dto = (IValueObject) getDTOGenerator().generateDTO(object);
} else
{
dto = (IValueObject) getDTOGenerator().generateDTO(object,
selectors);
}
getSession().evict(object);
return dto;
}
public List load(String oql, Selectors selectors,PagingQueryParam pageParam)
{
Query q = getSession().createQuery(oql);
if(pageParam!=null)
{
q.setMaxResults(pageParam.getPageSize());
q.setFirstResult(pageParam.getPageSize()*pageParam.getPageIndex());
}
List poList = q.list();
List dtoList = null;
if (selectors == null)
{
dtoList = getDTOGenerator().generateDTOList(poList);
} else
{
dtoList = getDTOGenerator().generateDTOList(poList, selectors);
}
evict(getSession(), poList);
return dtoList;
}
public List loadAll(Selectors selectors,PagingQueryParam pageParam)
{
Query q = getSession().createQuery(
"from " + getPersistObjectClass().getName());
if(pageParam!=null)
{
q.setMaxResults(pageParam.getPageSize());
q.setFirstResult(pageParam.getPageSize()*pageParam.getPageIndex());
}
List poList = q.list();
List dtoList = null;
if (selectors == null)
{
dtoList = getDTOGenerator().generateDTOList(poList);
} else
{
dtoList = getDTOGenerator().generateDTOList(poList, selectors);
}
evict(getSession(), poList);
return dtoList;
}
public List load(String oql, KeyValueList params, Selectors selectors,PagingQueryParam pageParam)
{
Query q = getSession().createQuery(oql);
if(pageParam!=null)
{
q.setMaxResults(pageParam.getPageSize());
q.setFirstResult(pageParam.getPageSize()*pageParam.getPageIndex());
}
if (params != null)
{
for (int i = 0, n = params.size(); i < n; i++)
{
KeyValue keyValue = params.getKeyValue(i);
q.setParameter(keyValue.getKey().toString(), keyValue
.getValue());
}
}
List poList = q.list();
List dtoList = null;
if (selectors == null)
{
dtoList = getDTOGenerator().generateDTOList(poList);
} else
{
dtoList = getDTOGenerator().generateDTOList(poList, selectors);
}
evict(getSession(), poList);
return dtoList;
}
public IValueObject loadByPK(String id)
{
return loadByPK(id, null);
}
public List load(String oql)
{
return load(oql, (Selectors) null);
}
public List loadAll()
{
return loadAll((Selectors)null);
}
public List load(String oql, KeyValueList params)
{
return load(oql, params,(Selectors)null);
}
public List load(String oql, KeyValueList params, PagingQueryParam pageParam)
{
return load(oql,params,(Selectors)null,pageParam);
}
public List load(String oql, KeyValueList params, Selectors selectors)
{
return load(oql,params,selectors,(PagingQueryParam)null);
}
public List load(String oql, PagingQueryParam pageParam)
{
return load(oql,(Selectors)null,pageParam);
}
public List load(String oql, Selectors selectors)
{
return load(oql,selectors,(PagingQueryParam)null);
}
public List loadAll(PagingQueryParam pageParam)
{
return loadAll((Selectors)null,pageParam);
}
public List loadAll(Selectors selectors)
{
return loadAll(selectors,(PagingQueryParam)null);
}
public boolean exists(String oql, KeyValueList params)
{
Query query = getSession().createQuery("select count(*) " + oql);
for (int i = 0, n = params.size(); i < n; i++)
{
KeyValue keyValue = params.getKeyValue(i);
query.setParameter(keyValue.getKey().toString(), keyValue
.getValue());
}
Number count = (Number) query.uniqueResult();
return count.intValue() > 0;
}
public boolean exists(String oql)
{
return exists(oql,new KeyValueList());
}
public String getEntityPath()
{
return NameUtils.getEntityPath(getPersistObjectClass().getName());
}
protected abstract Class getPersistObjectClass();
private static void evict(Session session, List poList)
{
for (int i = 0, n = poList.size(); i < n; i++)
{
session.evict(poList.get(i));
}
}
private static IDTOGenerator getDTOGenerator()
{
// 不能用单例,否则效率会很低的
return new HibernateDTOGenerator(HibernateConfig.getSessionFactory());
}
}
上一篇:
BaseDaoiBATIS.java
下一篇:
医学论文英语标题写作的修辞原则