Hibernate Criteria查询总结:在线与离线,Criterion与Projection解析
需积分: 9 95 浏览量
更新于2024-07-30
收藏 107KB DOC 举报
"关于Hibernate的Criteria用法的详细总结"
在Java的持久化框架Hibernate中,Criteria API提供了一种灵活且强大的方式来构建动态查询。它允许开发者在运行时构造查询,而不必预先编写SQL或者HQL(Hibernate Query Language)字符串。这种特性在处理复杂的查询逻辑时显得特别有用。
Criteria API的基础是`CriteriaSpecification`接口,它定义了基本的查询行为。有两个主要的实现:`Criteria`和`DetachedCriteria`。`Criteria`是在与Hibernate Session关联的情况下创建的,通常用于直接执行查询操作。而`DetachedCriteria`则可以在不依赖Session的情况下创建,这对于延迟加载或在非事务环境中构建查询非常有用。通过`DetachedCriteria.forClass()`或`DetachedCriteria.forEntityName()`方法可以创建一个离线的查询对象,之后在需要的时候与Session结合执行。
`Criterion`是Criteria查询的核心部分,代表了一个查询条件。`Criteria`对象通过调用`add(Criterion criterion)`方法添加这些条件。`Criterion`接口的常见实现包括`Example`(基于实例的匹配),`Junction`(包含`Conjunction`和`Disjunction`,分别对应AND和OR操作)以及`SimpleExpression`(如相等、大于、小于等比较操作)。`Restrictions`工具类提供了创建这些条件的便捷方法,例如`eq()`用于等于,`ge()`用于大于等于,`between()`用于范围查询等。
除了条件表达式,Criteria API还支持`Projection`,它定义了查询结果的返回形式,比如属性的聚合、计数等。`Projections`类提供了各种静态方法来创建不同的投影类型。
此外,Criteria API还可以设置查询的其他特性,如`FetchMode`控制关联对象的加载策略,`Sort`或`Order`用于指定查询结果的排序,`FlushMode`确定何时将Session中的更改写入数据库,而`LockMode`则用于控制行级锁定,以防止并发问题。
在实际应用中,Criteria API的一个显著优点是它可以很好地与Spring框架集成,特别是`HibernateTemplate`,它提供了`findByCriteria()`方法,使得基于`DetachedCriteria`的查询执行变得简单。
Hibernate的Criteria API提供了一套全面的工具,允许开发者以面向对象的方式构建灵活、可维护的查询,避免了硬编码SQL,提高了代码的可读性和可测试性。理解并熟练掌握Criteria API是每个Hibernate开发者必备的技能之一。
2018-04-17 上传
2011-03-02 上传
2023-07-20 上传
2023-05-03 上传
2023-03-24 上传
2023-03-24 上传
2023-03-24 上传
2023-05-31 上传
2023-05-31 上传
聆听随风
- 粉丝: 20
- 资源: 19
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解