`
一日一博
  • 浏览: 230418 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Hibernate4之Criteria接口QBC方式查询

阅读更多
分页查询
Criteria crit = session.createCriteria(Order.class).setMaxResults(10).setFirstResult(1);
crit.list();


条件查询
一个单独的查询条件是org.hibernate.criterion.Criterion 接口的一个实例org.hibernate.criterion.Restrictions类定义了获得某些内置Criterion类型的工厂方法。

//Restrictions.like和Restrictions.eq用法
List list = s.createCriteria(UserModel.class)  
             .add(Restrictions.eq("uuid", "3"))  
             .add(Restrictions.like("name", "%n%")).list();  

//Restrictions.or和Restrictions.isNull用法
List cats = s.createCriteria(Cat.class)  
             .add(Restrictions.like("name", "Fritz%") )  
             .add(Restrictions.or(Restrictions.eq("age",new Integer(0)),  
                  Restrictions.isNull("age"))).list();

//Restrictions.lt和Restrictions.in用法
List cats = s.createCriteria(Cat.class) 
             .add(Restrictions.in("name",new String[]{"Fritz", "Izi","Pk"})) 
             .add(
                  Restrictions.disjunction().add(Restrictions.isNull("age")) 
                  .add(Restrictions.lt("age", new Integer(100))) //小于
                  .add(Restrictions.le("age", new Integer(0))) //小于或等于
                  .add(Restrictions.gt("age", new Integer(0))) //大于
                  .add(Restrictions.ge("age", new Integer(1))) //大于或等于
                  .add(Restrictions.eq("age", new Integer(2))))).list(); 


排序
可以使用 org.hibernate.criterion.Order 来为查询结果排序。示例如下:

List cats = s.createCriteria(Cat.class)  
             .add(Restrictions.like("name", "F%"))
             .addOrder(Order.asc("name") )  
             .addOrder(Order.desc("age") )  
             .setMaxResults(50)  
             .list();

List cats = s.createCriteria(Cat.class)
             .add(Property.forName("name").like("F%"))
             .addOrder(Property.forName("name").asc())
             .addOrder(Property.forName("age").desc())
             .setMaxResults(50)
             .list();

//Restrictions.between用法
List list = session.createCriteria(StockDailyRecord.class).add(Restrictions.between("date", startDate, endDate)).list();


动态关联抓取
List cats = s.createCriteria(Cat.class) 
             .add( Restrictions.like("name", "Fritz%") ) 
             .setFetchMode("mate", FetchMode.EAGER) 
             .setFetchMode("kittens", FetchMode.EAGER) 
             .list();



Criteria的缺点


Criteria API同时也带有一些缺点。
1、性能问题
没有办法控制由Hibernate生成的SQL查询语句,如果生成的查询语句很慢,我们很难调整,数据库管理员可能非常不喜欢这样。

2、维护问题
所有的SQL查询散布在Java代码中,当一个查询出现错误时,我们可能需要花费大量的时间来找出问题所在。换句话说,存储在Hibernate映射文件中的命名查询更容易去维护。
结论

没有什么东西是完美的,考虑我们项目的需要,明智地使用它。
分享到:
评论

相关推荐

    Hibernate QBC高级查询.rar

    本资源“Hibernate QBC高级查询”聚焦于Hibernate Query by Criteria(QBC)的高级用法,旨在帮助开发者深入理解并熟练运用这一强大的查询机制。 Query by Criteria是Hibernate提供的另一种查询方式,与HQL...

    Hibernate_QBC和Hibernate_QBE

    标题"Hibernate_QBC和Hibernate_QBE"提及了两个关于Hibernate的查询方式,即Query By Criteria(QBC)和Query By Example(QBE)。Hibernate是Java领域中一个广泛使用的对象关系映射(ORM)框架,它允许开发者以面向...

    Hibernate实例开发 HQL 与 QBC 查询

    本教程将深入探讨Hibernate中的两种查询方式:HQL(Hibernate Query Language)和QBC(Query By Example)。通过实例开发,我们将了解这两种查询方法的使用和它们之间的差异。 首先,HQL是Hibernate专门设计的一种...

    QBC的各种查询

    QBC,全称为Query By Criteria,是Java世界中一种基于对象的查询方式,主要用于简化Hibernate框架中的数据查询操作。QBC提供了一种面向对象的方式来构建查询条件,与SQL语句相比,它更易于理解和维护,尤其在处理...

    Java_Hibernate QBC条件查询对比

    本篇文章将深入探讨Hibernate中的QBC(Query By Example)条件查询与传统的HQL(Hibernate Query Language)查询的对比,帮助开发者更好地理解和选择适合的查询方式。 QBC(Query By Example)是Hibernate提供的一...

    Hibernate-HQL-QBC-QBE

    3. QBC(Query By Criteria):QBC是另一种在Hibernate中进行数据查询的方法,它基于Java的标准API(JPA的Criteria API或Hibernate的Criteria API)。QBC允许开发者构建动态查询,通过定义一组标准和约束来获取满足...

    Hibernate中Criteria的用法

    Criteria 查询机制主要包括 QBE(Query By Example)、QBC(Query By Criteria)和 HQL(Hibernate Query Language)三种方式。 QBE(Query By Example) QBE 是一种基于示例的查询机制,它可以根据一个示例对象来...

    Hibernate的查询方式

    本文将深入探讨Hibernate的查询方式,特别聚焦于HQL(Hibernate Query Language)查询方式以及QBC(Query By Criteria)查询方式,旨在帮助读者全面理解并掌握这些核心功能。 #### HQL查询方式:面向对象的查询语言...

    Hibernate QBC分页

    本篇将详细介绍如何使用Hibernate的Query By Criteria (QBC)方式进行分页查询。 首先,我们需要了解QBC的基本概念。QBC是Hibernate提供的一种基于对象的查询方式,与HQL(Hibernate Query Language)类似,但更接近...

    Hibernate中Criteria的完整用法

    在Java的持久化框架Hibernate中,Criteria API提供了一种动态构造SQL查询的方式,它允许开发者在运行时构建查询,而无需硬编码HQL(Hibernate Query Language)或原生SQL语句。Criteria API提供了丰富的功能,包括但...

    Hibernate各种查询:联表查询 分页查询 位置参数查询(?) 占位符查询(冒号查询) 统计查询

    总的来说,Hibernate的`Criteria`、`Query`以及QBC(Query By Criteria)提供了灵活且强大的查询手段,它们不仅支持基本的单表查询,还能处理复杂的联表、分页、参数绑定和统计需求,是Java开发者进行数据库操作的...

    QBC查询的别名方的

    QBC(Query By Criteria)是Hibernate提供的一种查询方式,允许开发者通过构建查询条件来动态地创建SQL查询语句。相比于传统的HQL(Hibernate Query Language),QBC提供了更加灵活且易于控制的查询方式,特别适用于...

    Hibernate_QBC查询[归类].pdf

    Hibernate QBC(Query By Criteria)查询是Hibernate框架中一种面向对象的查询方式,它通过提供Criteria API使得开发者能够更方便地构建和执行SQL查询。QBC查询的优势在于它允许程序员用更加面向对象的方式处理...

    QBC的使用全集大全

    **QBC(Query By Example)**是Hibernate框架中的一种查询方式,它允许开发者通过实例对象来构造查询条件,提供了一种更加面向对象的查询方法。QBC查询在处理复杂的动态查询时尤其方便,因为它可以避免编写大量的SQL...

    hibernate 数据库操作方法

    Hibernate提供了三种主要的查询方式:SQL、HQL(Hibernate Query Language)和QBC(Query by Criteria)。 1. SQL查询: Hibernate支持直接执行SQL语句,这使得开发者可以充分利用数据库的特性和性能。通过`...

    QBC QBE查询

    QBC是Hibernate提供的一个高级查询接口,它允许开发者通过实例化Criteria对象来构造查询条件,从而实现动态查询。QBC的优点在于它可以更好地映射到对象模型,避免了直接编写SQL语句,提高了代码的可读性和可维护性。...

    Hibernate Criteria

    Hibernate QBC(Query By Criteria)查询是Criteria查询的另一种表达方式,其本质与Criteria查询相同,都是通过构建对象化的查询条件执行SQL。在QBC中,`Expression`类的角色被`Restrictions`类取代,但工作方式类似...

    Hibernate Criteria用法大全.docx

    Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件,无需直接编写SQL,使得代码更加...

Global site tag (gtag.js) - Google Analytics