编写Spring+Hibernate框架下的应用,总是离不了编写一个通用的泛型GenericHibernateDao。查阅了网上不少的GenericHibernateDao实现,归纳整理为如下实现,供后续编码参考。
GenericDao.java:
package dao;
import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.LockMode;
import org.hibernate.criterion.DetachedCriteria;
/**
*
* @author lny
*/
public interface GenericDao<T extends Serializable, PK extends Serializable>
{
// -------------------- 基本检索、增加、修改、删除操作 --------------------
// 根据主键获取实体。如果没有相应的实体,返回 null。
public T get(PK id);
// 根据主键获取实体并加锁。如果没有相应的实体,返回 null。
public T getWithLock(PK id, LockMode lock);
// 根据主键获取实体。如果没有相应的实体,抛出异常。
public T load(PK id);
// 根据主键获取实体并加锁。如果没有相应的实体,抛出异常。
public T loadWithLock(PK id, LockMode lock);
// 获取全部实体。
public List<T> loadAll();
// loadAllWithLock() ?
// 更新实体
public void update(T entity);
// 更新实体并加锁
public void updateWithLock(T entity, LockMode lock);
// 存储实体到数据库
public void save(T entity);
// saveWithLock()
// 增加或更新实体
public void saveOrUpdate(T entity);
// 增加或更新集合中的全部实体
public void saveOrUpdateAll(Collection<T> entities);
// 删除指定的实体
public void delete(T entity);
// 加锁并删除指定的实体
public void deleteWithLock(T entity, LockMode lock);
// 根据主键删除指定实体
public void deleteByKey(PK id);
// 根据主键加锁并删除指定的实体
public void deleteByKeyWithLock(PK id, LockMode lock);
// 删除集合中的全部实体
public void deleteAll(Collection<T> entities);
// -------------------- HSQL ----------------------------------------------
// 使用HSQL语句直接增加、更新、删除实体
public int bulkUpdate(String queryString);
// 使用带参数的HSQL语句增加、更新、删除实体
public int bulkUpdate(String queryString, Object[] values);
// 使用HSQL语句检索数据
public List find(String queryString);
// 使用带参数的HSQL语句检索数据
public List find(String queryString, Object[] values);
// 使用带命名的参数的HSQL语句检索数据
public List findByNamedParam(String queryString, String[] paramNames, Object[] values);
// 使用命名的HSQL语句检索数据
public List findByNamedQuery(String queryName);
// 使用带参数的命名HSQL语句检索数据
public List findByNamedQuery(String queryName, Object[] values);
// 使用带命名参数的命名HSQL语句检索数据
public List findByNamedQueryAndNamedParam(String queryName, String[] paramNames, Object[] values);
// 使用HSQL语句检索数据,返回 Iterator
public Iterator iterate(String queryString);
// 使用带参数HSQL语句检索数据,返回 Iterator
public Iterator iterate(String queryString, Object[] values);
// 关闭检索返回的 Iterator
public void closeIterator(Iterator it);
// -------------------------------- Criteria ------------------------------
// 创建与会话无关的检索标准对象
public DetachedCriteria createDetachedCriteria();
// 创建与会话绑定的检索标准对象
public Criteria createCriteria();
// 使用指定的检索标准检索数据
public List findByCriteria(DetachedCriteria criteria);
// 使用指定的检索标准检索数据,返回部分记录
public List findByCriteria(DetachedCriteria criteria, int firstResult, int maxResults);
// 使用指定的实体及属性检索(满足除主键外属性=实体值)数据
public List<T> findEqualByEntity(T entity, String [] propertyNames);
// 使用指定的实体及属性(非主键)检索(满足属性 like 串实体值)数据
public List<T> findLikeByEntity(T entity, String [] propertyNames);
// 使用指定的检索标准检索数据,返回指定范围的记录
public Integer getRowCount(DetachedCriteria criteria);
// 使用指定的检索标准检索数据,返回指定统计值
public Object getStatValue(DetachedCriteria criteria, String propertyName, String StatName);
// -------------------------------- Others --------------------------------
// 加锁指定的实体
public void
分享到:
相关推荐
GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,简化基于Hibernate Dao 的编写。
用hibernate作为持久化解决方案的GenericHibernateDao实现类,被定义为抽象类,它提取了CRUD操作,这就是简化代码的关键,以便于更好的重用,这个就不给例子了,增删改都好写,查就需要各种条件了。 然后是各个领域...
1. `get(PK id)`:根据主键获取一个实体,如果不存在则返回null。 2. `load(PK id)`:与`get`类似,但当实体不存在时会抛出异常。 3. `loadWithLock(PK id, LockMode lock)`:获取并锁定一个实体,防止并发问题。 4....
1. **BaseAction**:这是BS(Browser-Server)架构中的一个基础Action类,用于处理请求。`forwardMap.put("forward", "next")`这一行代码表明,它可能用于设置请求的转发路径,可以是.jsp页面或.do动作。 2. **...
基于改进10机39节点系统的分布式风电场站模型:考虑风速差异与调频能力的风电等值研究,分布式风电场站模型 改进的10机39节点系统,包含两个风电场,每个风电场含有10台风机 用于分布式风机做风电等值,考虑风电场风速差异,考虑不同风速风电机组的调频能力。 包含风电综合惯性控制和转速保护模块。 ,核心关键词:分布式风电场站模型; 改进的10机39节点系统; 风电场风速差异; 不同风速风电机组调频能力; 风电综合惯性控制; 转速保护模块。,分布式风电场站模型优化研究:考虑风速差异与风电机组调频能力的10机39节点系统
C语言之整数转换英文表示
FPGA GTH aurora编解码技术实现PCIE视频传输:源码及上位机支持,FPGA GTH aurora 8b 10b PCIE 视频传输 FPGA GTH aurora 8b 10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和 ,核心关键词:FPGA; GTH; Aurora; 8b 10b编解码; PCIE; 视频传输; 工程源码; QT上位机源码。,"FPGA视频传输解决方案:GTH Aurora 8b/10b编解码与PCIE支持"
基于正点原子开发板与OV5640摄像头的FPGA Sobel边缘检测与中值滤波灰度图像处理源码解析,FPGA sobel 边缘检测 中值滤波 基于灰度图像处理 ,开发板采用正点原子的,摄像头为ov5640 只有源码只有源码只有源码 ,关键词:FPGA; Sobel边缘检测; 中值滤波; 灰度图像处理; 正点原子开发板; OV5640摄像头; 源码。,基于正点原子开发板,OV5640摄像头灰度图像处理:FPGA Sobel边缘检测与中值滤波源码
"简单质量添加单层与多层熔覆模拟:含三维质量源项、移动高斯热源及自定义编程与仿真教程",简单质量添加单层以及多层。 里面包含简单的三维质量源项以及移动高斯热源,并且可以进行多层熔覆模拟,包含完整的仿真模型以及自定义编程代码和讲解视频 ,核心关键词:简单质量;单层多层;三维质量源项;移动高斯热源;多层熔覆模拟;完整仿真模型;自定义编程代码;讲解视频。,"三维质量源项与多层熔覆模拟:含单层及多层添加技术,附完整仿真模型与自定义编程教程"
天然气水合物降压开采的多场耦合模拟:储层特征与环空高压影响研究,天然气水合物降压开采,基于COMSOL热-流-固多场耦合实现,同时可以表征开采过程中的储层孔隙度、渗透率的演化,考虑水平井筒环空高压充填石英砂层,有水平井和压裂水平井模型。 ,核心关键词:天然气水合物降压开采; COMSOL热-流-固多场耦合; 储层孔隙度演化; 渗透率演化; 水平井筒环空高压充填石英砂层; 水平井模型; 压裂水平井模型。,基于COMSOL的天然气水合物降压开采模拟:多场耦合与储层孔渗演化研究
基于MATLAB 2016b的5MW永磁同步风机与混合储能系统并网仿真研究,5MW永磁同步风机-1200V直流混合储能并网MATLAB仿真 MATLAB2016b运行。 主体模型: 风机传动模块、PMSG模块、蓄电池模块、超级电容模块、无穷大电源。 蓄电池控制、风机控制、逆变器控制。 ,5MW永磁同步风机; 直流混合储能; 并网仿真; MATLAB2016b; 主体模型; 风机传动模块; PMSG模块; 蓄电池模块; 超级电容模块; 逆变器控制。,"MATLAB仿真研究:5MW永磁同步风机与1200V直流混合储能系统并网控制策略"
无差拍电流预测控制替代传统PI控制器,电机参数自适应辨识的新模型,该模型采用无差拿电流预测控制代替传统电流环的PI控制器,并采用模型参自适应对电机参数进行辨识 ,核心关键词:无差拍电流预测控制; PI控制器; 模型参数自适应; 电机参数辨识; 传统电流环控制。,"无差拍电流预测控制与模型参自适应电机参数辨识模型"
Fluent电弧模型解析与等离子体建模入门:电弧仿真模型案例及UDF讲解,结果后处理全套课程指南,Fluent电弧模型,电弧等离子体建模,二维40三维150入门电弧仿真模型案例,带视频讲解UDF,结果后处理,全套课程。 ,核心关键词:Fluent电弧模型; 电弧等离子体建模; 二维40三维150电弧仿真模型案例; 视频讲解UDF; 结果后处理; 全套课程,"电弧仿真入门:Fluent电弧模型与等离子体建模教程"
"基于OpenCVSharp的智能视觉工具集:含缩放旋转形状模板匹配与自定义直线卡尺控件,全源码可直接导入项目使用",基于opencvsharp的视觉工具,包括基于形状的模板匹配(支持缩放以及旋转)、直线卡尺工具(包含自定义卡尺控件),可直接导入项目使用,其他功能正在开发中。 具体效果如图所示,整套源码。 ,基于OpenCVSharp的视觉工具; 形状模板匹配(支持缩放旋转); 直线卡尺工具(含自定义卡尺控件); 导入项目使用; 整套源码。,OpenCVSharp视觉工具集:支持缩放旋转模板匹配与自定义卡尺功能
电机控制器中的IGBT结温估算策略:专业级机密算法详解,实时分析确保安全与性能提升,Simulink模型及底层算法库开源分享。,电机控制器,IGBT结温估算(算法+模型)国际大厂机密算法,多年实际应用,准确度良好 高价值知识 能够同时对IGBT内部6个三极管和6个二极管温度进行估计,并输出其中最热的管子对应温度。 可用于温度保护,降额,提高产品性能 simulink模型除仿真外亦可生成代码 提供直流、交流两个仿真模型 提供底层算法模型库(开源,带数据) 提供说明文档 ,核心关键词: IGBT结温估算; 电机控制器; 算法模型; 国际大厂机密算法; 高价值知识; 多实际应用; 温度保护; 降额; 提高产品性能; simulink模型; 直流仿真模型; 交流仿真模型; 底层算法模型库; 开源数据; 说明文档。,"IGBT结温精准估算:国际大厂机密算法揭秘,六管温度同步监测,保护降额提升性能"
c语言24点游戏源码.zip
组合式空调设备PLC程序架构解析:西门子1200PLC+通讯技术+触摸屏操控,动态画面展示,恒温恒湿PID精准控制,实用工艺分享,博图V15.1版本参考学习。,组合式空调设备PLC程序,采用西门子1200PLC+485通讯+触摸屏TP系列+电气原理图组成的,程序架构清晰; 恒温恒湿PID精准控制,带通讯,多种模式,带触摸屏程序,动态画面 很值得学习和参考,工艺差距不大可以直接调用。 实话实说,自己觉得好用,介绍给大家一起学习。 程序打开版本博图V15.1 内容非常实用,非常适合学习和借鉴 ,核心关键词:组合式空调设备; PLC程序; 西门子1200PLC; 485通讯; 触摸屏TP系列; 电气原理图; 程序架构; 恒温恒湿PID控制; 多种模式; 动态画面; 博图V15.1; 实用; 学习; 借鉴。,基于PLC的组合式空调设备控制程序:清晰架构与PID精准控制
基于A星算法与DWA融合的动态路径规划技术:实现静态与动态避障的智能导航,基于A星与DWA算法融合的动态路径规划,可实现静态避障碍及动态避障 ,核心关键词:A星算法; DWA算法; 动态路径规划; 静态避障碍; 动态避障; 融合算法。,基于A星与DWA融合算法的动态路径规划与实时避障系统
PLL电荷泵锁相环CPPLL仿真环境搭建完成,电路版图验证,书籍与工艺库赠送,特性详述:可调分频比锁定频率高达2GHz,快速锁定时间,环形振荡器与核心模块介绍。,pll电荷泵锁相环 cppll(已流片)仿真环境搭建好了 电路到版图都已流片验证,另外送PLL书籍电子版和对应工艺库。 另加50就可以得到完整版图 三阶二型锁相环 参考频率50-100MHz 分频比可调 锁定频率600M-2GHz 锁定时间4us 环形振荡器 ring vco 鉴频鉴相器PFD模块 分频器DIV模块 ,ps counter 电荷泵CP模块 ,"PLL电荷泵锁相环CPPLL流片验证,高稳定分频模块仿真环境搭建"