hibernate对统计分析操作行为做了封装,通过Projections对统计行为进行操作(投影、统计、不重复结果)
要想使用Hibernate的投影统计功能,首先要从org.hibernate.criterion.Projections工厂类获得org.hibernate.criterion.Projection对象。与Restrictions类相似,Projections类提供了几个用来获取Projection实例的静态工厂方法。在获得Projection对象之后,使用setProjection()方法将它添加到Criteria对象中。注意,返回的结果集是Object类型,需要对结果进行适当的类型转换。
例如:
//distinct
DetachedCriteria dc = this.createDetachedCriteria();
dc.add(Restrictions.eq(type, type));
dc.setProjection(Projections.distinct(Projections.property("label")));//排除重复
Hibernate的Projections工厂类包含了以下几个常用的统计函数:
① avg(String propertyName):计算属性字段的平均值。
② count(String propertyName):统计一个属性在结果中出现的次数。
③ countDistinct(String propertyName):统计属性包含的不重复值的数量。
④ max(String propertyName):计算属性值的最大值。
⑤ min(String propertyName):计算属性值的最小值。
⑥ sum(String propertyName):计算属性值的总和。
投影操作时,当执行多个统计投影时,会获取一个List,并且是一个Object类型的List,其中依次包含所有的统计投影结果。
Criteria Crit = getSession().createCriteria(Product.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.property("name"));
projList.add(Projections.property("description"));
Crit.setProjection(projList);
List result = Crit.list();
使用这种查询风格可以减少应用服务器和数据库服务器之间的网络通信量。但是,如果客户机的内存容量的确是有限的,那么这种查询方式可以避免处理大型数据集对内存的压力。如果不确定以后是否需要一个完整的结果集,这得要执行另外一次查询,反而降低了查询性能。所以只能在适当的时候才使用Hibernate的投影功能。
使用group by
Criteria Crit = getSession().createCriteria(Product.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.groupProperty("name"));
projList.add(Projections.groupProperty("price"));
分享到:
相关推荐
【Hibernate Criteria 用法详解】 Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件...
使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。Criteria crit = session.createCriteria(User.class); crit.add(Restrictions.eq("name", "John")); List...
在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...
"Hibernate - DetachedCriteria 的完整用法" Hibernate 的 Criteria 和 DetachedCriteria 是两个不同的概念,虽然它们都是用于查询数据的,但它们在创建和使用上有所不同。 首先,Criteria 是在线的,需要通过 ...
以下是一些使用Criteria API的基本用法: 1. 创建Criteria实例: ```java Criteria criteria = session.createCriteria(User.class); ``` 2. 添加查询条件: ```java criteria.add(Restrictions.eq("username...
- `hibernate_080914`: 直接与Hibernate相关的源码或教程材料,可能涵盖Hibernate的核心概念和用法。 通过研究这些文件,学习者可以深入了解Hibernate的工作原理,提升数据库操作的技能,并了解如何在实际项目中...
本教程主要基于传智播客的PPT资料,旨在帮助学习者深入理解Hibernate的核心概念和使用方法。 Hibernate是一个强大的Java持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是数据库交互。通过...
Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在Java应用程序中管理和持久化数据到关系数据库的方法。ORM框架能够将复杂的SQL操作和数据库交互转化为简单的对象操作,极大地提高了开发...
要开始使用Criteria,你需要在Hibernate的Session中调用`createCriteria()`方法,传入你想查询的实体类的Class对象。例如,如果你要查询Person实体,你会这样做: ```java Criteria c = session.createCriteria...
下面将详细阐述Hibernate3的主要概念、功能及其使用方法。 1. **对象关系映射(ORM)基础** - ORM是将数据库中的表映射为Java类的过程,使得程序员可以使用面向对象的方式处理数据。 - Hibernate通过XML配置文件...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而提高开发效率。本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的...
本文将对 Hibernate 中 Criteria 的用法进行总结,涵盖 Criteria 和 DetachedCriteria 的差异、Criterion 和 Projection 的使用方法等。 Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供...
总结,Hibernate提供多种方式查询数据表中的字段,包括HQL、Criteria API和DetachedCriteria,选择合适的方法取决于具体需求。正确理解和使用Hibernate,能够大大提高Java开发中的数据库操作效率。
Hibernate提供了`setMaxResults()`和`setFirstResult()`两个方法来帮助实现这一功能。 **示例代码**: ```java Criteria criteria = session.createCriteria(User.class); criteria.setFirstResult(51); // 设置...
虽然`Criteria API`主要是为了使用Hibernate的ORM功能,但也可以通过`Projections.sqlProjection()`执行原生SQL投影,从而创建自定义的查询。 ```java Criteria criteria = session.createCriteria(User.class); ...
通过提供一种对象化的数据访问方式,Hibernate使得开发者可以使用面向对象的编程模型来处理数据库操作,而无需直接编写SQL语句。 在Java应用中,Hibernate API主要包含以下几个关键模块: 1. **SessionFactory**:...
- `count()`: 计算实体总数,通常使用`Session.createCriteria().setProjection(Projections.rowCount()).uniqueResult()`。 - `query(Criteria criteria)`: 根据Criteria查询条件获取实体列表,提供了更复杂的...
通过这个 Hibernate 入门教程,你应该能够理解 Hibernate 的基本概念,掌握其配置与使用方法,并能够进行基本的数据库操作。随着深入学习,你将发现 Hibernate 在处理复杂的数据库操作时能带来巨大的便利。持续实践...
Hibernate Criteria 是一种在Java应用程序中使用Hibernate ORM框架执行SQL查询的方式。它提供了一种面向对象的方式来构建查询,使得代码更加可读和易于维护。Criteria API 提供了多种方法来构建复杂的查询,包括添加...