
Hibernate Criteria查询详解:离线查询DetachedCriteria
下载需积分: 0 | 116KB |
更新于2024-08-18
| 201 浏览量 | 举报
收藏
"这篇资料主要总结了Hibernate框架中的离线查询——Criteria的使用,包括DetachedCriteria、Criteria的基本操作、投影以及别名等概念。"
在Hibernate中,Criteria API提供了一种面向对象的方式来构建SQL查询,它使得在Java代码中进行数据库查询变得更加直观和灵活。Criteria API属于`org.hibernate.Criteria`接口,它表示一个特定持久类的查询。下面将对Criteria的主要方面进行详细说明:
1. 创建Criteria
创建Criteria对象是通过Hibernate的`Session`接口完成的,例如:
```java
Criteria criteria = session.createCriteria(User.class);
```
这里`User.class`代表要查询的实体类。
2. Criteria简介
- 行操作:Criteria提供了`Example`、`Property`和`Restrictions`等方法来处理行级别的查询条件。
- 列操作:`Projections`用于设置查询结果的列,比如获取平均值、计数或特定列的值。
3. 离线查询 - DetachedCriteria
`DetachedCriteria`允许我们在不直接与数据库交互的情况下构建查询,这在多线程或者缓存查询场景中非常有用。你可以先创建一个DetachedCriteria对象,然后在需要的时候再将其与Session关联执行。
4. Criteria的其他操作
- 别名操作:`createAlias()`用于指定关联关系的别名,方便后续操作,例如:
```java
criteria.createAlias("address", "addr");
```
这里`address`是实体类的一个属性,`addr`是为其指定的别名。
- 投影(Projections):`Projections`类提供了多种方法来设置查询的返回值,如`Projections.count("id")`计算id的数量。
- 级联操作:`createCriteria()`可以用来添加子查询,创建新的Criteria来处理复杂的关联查询。
5. 过时和常用方法
Criteria API中有过时和非过时的方法,对于开发来说,应该主要使用非过时的方法。例如,`add(Criterion criterion)`用于添加查询条件,`addOrder(Order order)`则用于指定查询结果的排序方式。
6. 参数化方法
方法如`createCriteria(String propertyName)`和`createCriteria(String propertyName, String alias)`分别用于创建子Criteria,其中`propertyName`是关联属性的名称,`alias`是可选的别名。
7. 实际应用
在实际编程中,通常会结合Restrictions类提供的各种条件(如`eq()`, `gt()`, `lt()`等)来构建复杂的查询条件,然后使用Projections来定义查询结果的格式,最后通过`list()`或`uniqueResult()`方法执行查询。
通过这些基本操作,开发者可以构建出灵活且易于维护的查询逻辑,避免了硬编码SQL语句,提高了代码的可读性和可维护性。在大型项目中,尤其是在需要大量动态查询的情况下,Criteria API是一个非常实用的选择。
相关推荐










郑云山
- 粉丝: 32
最新资源
- J2ME手机游戏开发详解与2D游戏开发指南
- Java局域网聊天工具源码及运行指南
- JMenuTab:创新的JS+DIV前端框架体验
- C/C++指针全解:从基础到进阶技巧
- 基于Asp.net2.0的在线图书销售系统设计与实现
- MATLAB在线性代数中的应用教程
- VC tabctrl控件应用实例解析
- 掌握Dreamweaver扩展提升网页开发效率
- 探索JavaScript3D特效:图片与文字的炫酷表现
- 同济大学线性代数第五版第5章课件解析
- 实现UDLA框架下数据库无关的数据绑定
- 软件测试课程:黑盒测试实践与三角形矩形面积比较
- C语言图形编程函数速查电子书
- 枫叶小组项目BBS论坛源代码参考与学习指南
- LPC2148开发板LCD12864驱动程序优化指南
- Oracle日期函数全面解析与应用总结
- ASP.NET新闻内容滚动控件源码发布
- Linux设备驱动开发配套例子源代码解析
- C#自动更新程序源码及调用示例解析
- 网页模板资源包:PSD、HTML及Flash设计源文件
- 基于JSP技术实现的简易留言板教程
- 实现网站省市县三级无刷新联动菜单方法
- 掌握局域网构建与管理的全面指南
- 易语言实现的简易生产管理系统