Hibernate Criteria查询总结:使用与实战
需积分: 9 194 浏览量
更新于2024-07-29
收藏 107KB DOC 举报
"这篇文章除了介绍Hibernate的Criteria用法外,还涉及了DetachedCriteria、Criterion和Projection等核心概念。作者强调了Criteria在实际项目中的灵活性,并对比了在线Criteria与离线DetachedCriteria的区别。同时,文章还提到了FetchMode、FlushMode和LockMode的设置以及Criterion的实现方式,尤其是通过Restrictions工具类创建查询条件的方法。"
在Java的持久化框架Hibernate中,Criteria API提供了一种动态构建SQL查询的方式,这使得开发者能够更加灵活地构建复杂的查询条件,而无需直接编写SQL语句。Criteria API的设计理念是面向对象,使得查询操作更加符合OO编程的思维。
Criteria是CriteriaSpecification接口的一个实现,它可以直接在HibernateSession上下文中创建并执行查询。这种在线的Criteria可以在当前Session中直接使用,允许开发者实时地构建和执行查询。相反,DetachedCriteria则是独立于Session的,可以在任何地方创建,然后在需要的时候与Session结合执行。DetachedCriteria通过`forClass`或`forEntityName`方法初始化,这在设计时就提供了更多的灵活性,比如在服务层预定义查询条件。
为了指定查询条件,Criteria API使用了Criterion接口。Criterion代表了一个查询条件,可以是简单的比较(如eq、ne、gt、lt等),也可以是逻辑组合(如conjunction和disjunction,对应AND和OR操作)。Restrictions工具类是创建Criterion实例的主要途径,它提供了大量静态方法来构建各种比较条件。
Projection接口则用于定义查询结果的投影,即查询返回的列。它可以是属性、函数、算术表达式,甚至整个实体对象。通过设置Projection,你可以控制查询返回的结果集形式。
此外,Criteria API还允许设置FetchMode来控制关联对象的加载策略,选择一次性加载(EAGER)还是延迟加载(LAZY)。FlushModel定义了Session何时应该被刷新,通常有NEVER、ALWAYS和AUTO几种模式。LockMode则用于控制数据库行级锁定,防止并发问题,有NONE、READ和WRITE等模式。
Hibernate的Criteria API提供了一套强大的查询机制,能够帮助开发者构建复杂的查询条件,同时保持代码的清晰性和可维护性。通过熟悉和熟练使用Criteria、DetachedCriteria、Criterion和Projection,可以显著提高开发效率和应用性能。
2018-04-17 上传
2011-03-02 上传
2022-06-19 上传
2012-06-13 上传
点击了解资源详情
点击了解资源详情
2008-08-20 上传
2008-06-05 上传
2010-01-14 上传
chinafjfzlj
- 粉丝: 5
- 资源: 164
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍