`

GenericHibernateDao1

阅读更多
编写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
分享到:
评论

相关推荐

    简单封装 HibernateTemplate 各项功能

    GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,简化基于Hibernate Dao 的编写。

    一个很好的通用泛型dao(含源码)

    用hibernate作为持久化解决方案的GenericHibernateDao实现类,被定义为抽象类,它提取了CRUD操作,这就是简化代码的关键,以便于更好的重用,这个就不给例子了,增删改都好写,查就需要各种条件了。 然后是各个领域...

    Hibernate泛型DAO及使用方法.doc

    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. **...

    地级市GDP及产业结构数据-最新.zip

    地级市GDP及产业结构数据-最新.zip

    2006-2023年上市公司资产误定价Misp数据集(4.9万样本,含原始数据、代码及结果,最新).zip

    2006-2023年上市公司资产误定价Misp数据集(4.9万样本,含原始数据、代码及结果,最新).zip

    Altera和Xilinx FPGA的从串配置模式比较

    本文对两大主流FPGA厂商的从串配置模式(Altera:Passive Serial Mode;Xilinx:Slave Serial Mode)进行了描述,并指出了主要的不同之处。

    Spring Boot 教程源码项目:含多种功能示例.zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    R语言高级建模课程全集-最新整理.zip

    R语言高级建模课程全集-最新整理.zip

    Python绘制三维心形图案的技术方法

    内容概要:本文档展示了使用 Python绘制一个三维爱心的具体方法与步骤。 适用人群:适合对Python编程语言有一定了解,并且希望学习如何完成复杂图像渲染的研究者或开发者。 使用场景及目标:本项目适用于教学环境或是个人兴趣爱好,能够帮助读者更好地掌握三维图形编程技巧以及了解隐函数作图的基本原理。

    2024年下半年软考中级网络工程GRE与IPSEC的联动配置思路文档

    该文档为核心配置实验思路,在实验中有不懂的请参考该思路

    四大政策效应评价方法全集-最新.zip

    四大政策效应评价方法全集-最新.zip

    2024年下半年软考中级网络工程GRE与IPSEC的联动配置

    该实验为核心配置实验,与下一个采用其不同的方法进行配置,其核心思路一样,顺序略有差异,请大家进行对比反复琢磨

    Spring Microservices in Action 第二版代码示例.zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    单基因生物信息学分析视频教程-完整版最新.zip

    单基因生物信息学分析视频教程-完整版最新.zip

    驾驭未来:Simulink中PMSM永磁同步电机控制深度解析

    在现代工业自动化和电动汽车领域,永磁同步电机(PMSM)因其高效率、高性能和紧凑设计而备受青睐。本文将详细介绍如何在Simulink中实现PMSM的控制,包括矢量控制(FOC)策略的实现,以及必要的代码示例,旨在为工程师和研究者提供实用的指导。 一、PMSM控制概述 永磁同步电机(PMSM)以其高功率密度、高效率和优异的动态响应而广泛应用于工业和汽车领域。在Simulink中实现PMSM控制,通常采用矢量控制(Field-Oriented Control, FOC)策略,该策略通过磁场定向控制实现电机转矩和速度的精确控制。 二、PMSM数学模型与Simulink实现 PMSM的数学模型包括电压方程、磁链方程和转矩方程。在Simulink中,我们可以通过构建相应的模块来实现这些方程。 1. PMSM数学模型 电压方程: u d = R s i d − ω e L q i q + L d d i d d t + ω e ψ f u d ​ =Rsid−ω e ​ L q ​ iq+

    2000-2020年中国海洋统计年鉴-最新数据发布.zip

    2000-2020年中国海洋统计年鉴-最新数据发布.zip

    图书《Spring Batch 批处理框架》配套源代码项目.zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    安慰剂检验代码与数据文章-最新研究成果.zip

    安慰剂检验代码与数据文章-最新研究成果.zip

    VB+ACCESS学生公寓管理系统(源代码+系统).rar

    VB+ACCESS学生公寓管理系统(源代码+系统)

Global site tag (gtag.js) - Google Analytics