Hibernate 数据库操作 模板基类 GenericDao

packagecom.ddhome.dao;

importjava.io.Serializable;

importjava.util.Collection;

importjava.util.Iterator;

importjava.util.List;

importorg.hibernate.Criteria;

importorg.hibernate.LockMode;

importorg.hibernate.criterion.DetachedCriteria;

/**

*

*@authortxc

*/

publicabstractinterfaceGenericDao{

//--------------------基本检索、增加、修改、删除操作--------------------

//根据主键获取实体。如果没有相应的实体,返回null。

publicTget(PKid);

//根据主键获取实体并加锁。如果没有相应的实体,返回null。

publicTgetWithLock(PKid,LockModelock);

//根据主键获取实体。如果没有相应的实体,抛出异常。

publicTload(PKid);

//根据主键获取实体并加锁。如果没有相应的实体,抛出异常。

publicTloadWithLock(PKid,LockModelock);

//获取全部实体。

publicListloadAll();

//loadAllWithLock()?

//更新实体

publicvoidupdate(Tentity);

//更新实体并加锁

publicvoidupdateWithLock(Tentity,LockModelock);

//存储实体到数据库

publicvoidsave(Tentity);

//saveWithLock()

//增加或更新实体

publicvoidsaveOrUpdate(Tentity);

//增加或更新集合中的全部实体

publicvoidsaveOrUpdateAll(Collectionentities);

//删除指定的实体

publicvoiddelete(Tentity);

//加锁并删除指定的实体

publicvoiddeleteWithLock(Tentity,LockModelock);

//根据主键删除指定实体

publicvoiddeleteByKey(PKid);

//根据主键加锁并删除指定的实体

publicvoiddeleteByKeyWithLock(PKid,LockModelock);

//删除集合中的全部实体

publicvoiddeleteAll(Collectionentities);

//--------------------HSQL----------------------------------------------

//使用HSQL语句直接增加、更新、删除实体

publicintbulkUpdate(StringqueryString);

//使用带参数的HSQL语句增加、更新、删除实体

publicintbulkUpdate(StringqueryString,Object[]values);

//使用HSQL语句检索数据

publicListfind(StringqueryString);

//使用HSQL语句检索数据,分页

publicListfind(StringqueryString,Object[]values,intstart,intlimit);

publicintgetRow(finalStringqueryString,finalObject[]values);

//使用带命名的参数的HSQL语句检索数据

publicListfindByNamedParam(StringqueryString,String[]paramNames,

Object[]values);

//使用命名的HSQL语句检索数据

publicListfindByNamedQuery(StringqueryName);

//使用带参数的命名HSQL语句检索数据

publicListfindByNamedQuery(StringqueryName,Object[]values);

//使用带命名参数的命名HSQL语句检索数据

publicListfindByNamedQueryAndNamedParam(StringqueryName,

String[]paramNames,Object[]values);

//使用HSQL语句检索数据,返回Iterator

publicIteratoriterate(StringqueryString);

//使用带参数HSQL语句检索数据,返回Iterator

publicIteratoriterate(StringqueryString,Object[]values);

//关闭检索返回的Iterator

publicvoidcloseIterator(Iteratorit);

//--------------------------------Criteria------------------------------

//创建与会话无关的检索标准对象

publicDetachedCriteriacreateDetachedCriteria();

//创建与会话绑定的检索标准对象

publicCriteriacreateCriteria();

//使用指定的检索标准检索数据

publicListfindByCriteria(DetachedCriteriacriteria);

//使用指定的检索标准检索数据,返回部分记录

publicListfindByCriteria(DetachedCriteriacriteria,intfirstResult,

intmaxResults);

//使用指定的实体及属性检索(满足除主键外属性=实体值)数据

publicListfindEqualByEntity(Tentity,String[]propertyNames);

publicTfindUniqueEqualByEntity(Tentity,String[]propertyNames);

publicTfindUniqueByCriteria(DetachedCriteriacriteria);

publicListfindEqualByEntity(Tentity,String[]propertyNames,intfromIdx,intfetchCount);

//使用指定的实体及属性(非主键)检索(满足属性like串实体值)数据

publicListfindLikeByEntity(Tentity,String[]propertyNames);

//使用指定的检索标准检索数据,返回指定范围的记录

publicIntegergetRowCount(DetachedCriteriacriteria);

//使用指定的检索标准检索数据,返回指定统计值

publicObjectgetStatValue(DetachedCriteriacriteria,StringpropertyName,

StringStatName);

//--------------------------------Others--------------------------------

//加锁指定的实体

publicvoidlock(Tentity,LockModelockMode);

//强制初始化指定的实体

publicvoidinitialize(Objectproxy);

//强制立即更新缓冲数据到数据库(否则仅在事务提交时才更新)

publicvoidflush();

}

相关推荐