`
ariyue
  • 浏览: 345271 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Hibernate 深入研究之 Criteria

    博客分类:
  • java
阅读更多
Hibernate 设计了 CriteriaSpecification 作为 Criteria 的顶级接口,其下面提供了 Criteria 和 DetachedCriteria 。

网管u家u.bitscn@com

Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离线的,创建时无需 Session , DetachedCriteria 提供了 4 个静态方法 forClass(Class) 或 forEntityName(Name) 进行 DetachedCriteria 实例的创建。 Spring 的框架提供了 网管u家www.bitscn.net

getHibernateTemplate().findByCriteria(detachedCriteria) 方法可以很方便地根据

网管有家bitscn.net

DetachedCriteria 来返回查询结果。 网管下载dl.bitscn.com

如图 1 , Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode( 联合查询抓取的模式 ) ,设置排序方式。对于 Criteria 还可以设置 FlushModel (冲刷 Session 的方式)和 LockMode (数据库锁模式)。
网管下载dl.bitscn.com

下面就对 Criterion 和 Projection 进行详细说明。
网管网www.bitscn.com

        网管有家www.bitscn.net

图 1 中国网管联盟bitsCN.com


网管u家u.bitscn@com

       Criterion 是 Criteria 的查询条件。 网管有家www.bitscn.net

Criteria 提供了 add(Criterion criterion) 方法来添加查询条件。图 2 是 Criterion 的结构图。 Criterion 接口的主要实现包括: Example 、 Junction 和 SimpleExpression 。而 Junction 的实际使用是它的两个子类 conjunction 和 disjunction ,分别是使用 AND 和 OR 操作符进行来联结查询条件集合。
网管有家bitscn.net

Criterion 的实例可以通过 Restrictions 工具类来创建, Restrictions 提供了大量的静态方法,如 eq (等于)、 ge (大于等于)、 between 等来方法的创建 Criterion 查询条件

网管有家bitscn.net

( SimpleExpression 实例)。除此之外, Restrictions 还提供了方法来创建 conjunction 和 disjunction 实例,通过往该实例的 add(Criteria) 方法来增加查询条件形成一个查询条件集合。 网管有家www.bitscn.net

至于 Example 的创建有所不同, Example 本身提供了一个静态方法 create(Object entity) ,即根据一个对象(实际使用中一般是映射到数据库的对象)来创建。然后可以设置一些过滤条件: 网管u家u.bitscn@com

Example exampleUser =Example.create(u)

网管u家www.bitscn.net

.ignoreCase() // 忽略大小写

网管下载dl.bitscn.com

.enableLike(MatchMode.ANYWHERE); 网管论坛bbs_bitsCN_com

// 对 String 类型的属性,无论在那里值在那里都匹配。相当于 %value% 网管有家bitscn.net

中国网管论坛bbs.bitsCN.com


图 2

网管有家bitscn.net

       网管u家bitscn.net

Project 主要是让 Criteria 能够进行报表查询,并可以实现分组。 Project 主要有 SimpleProjection 、 ProjectionList 和 Property 三个实现。其中 SimpleProjection 和 ProjectionList 的实例化是由内建的 Projections 来完成,如提供的 avg 、 count 、 max 、 min 、 sum 可以让开发者很容易对某个字段进行统计查询。

网管u家u.bitsCN.com

       Property 是对某个字段进行查询条件的设置,如通过

网管下载dl.bitscn.com

      Porperty.forName(“color”).in(new String[]{“black”,”red”,”write”}); 则可以创建一个 Project 实例。通过 criteria 的 add(Project) 方法加入到查询条件中去。
网管u家u.bitscn@com

中国网管联盟bitsCN.com


图 3
网管网www_bitscn_com

       中国网管论坛bbs.bitsCN.com

       使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装,其结构层次如何。这样使用起来便可得心应手。
分享到:
评论

相关推荐

    Hibernate深入研究之Criteria.rar

    《Hibernate深入研究之Criteria》 Hibernate作为Java领域中的一款强大持久化框架,极大地简化了数据库操作,使得开发者能够更加专注于业务逻辑,而非繁琐的SQL语句。本篇将重点探讨Hibernate中的Criteria API,这是...

    hibernate技术研究对比总结

    本文档的主要目的是为了深入理解 Hibernate 的工作原理、特性和最佳实践,以及与其他ORM框架的比较,为开发者提供决策依据。 1.2 **文档范围** 文档覆盖了 Hibernate 的核心概念,如对象关系映射、持久化模型、事务...

    Hibernate 多表连接分页查询示范项目

    **Hibernate 框架简介** Hibernate 是一个流行的 Java ORM(对象关系映射)框架,它允许开发者用面向对象的方式操作数据库,将...通过深入研究这个项目,开发者可以更好地理解如何在 Java 应用中高效地处理多表数据。

    Hibernate 简单 PPT 总结

    深入QBC查询.md可能涵盖了Hibernate的Query By Criteria API,这是另一种查询数据库的方式,除了传统的HQL(Hibernate Query Language)外,开发者可以通过构建Criteria对象来执行动态查询,这种方式更接近面向对象...

    hibernate教程打包下载,史上最全的HIBERNATE

    这份史上最全的Hibernate教程,旨在帮助新手快速入门并掌握Hibernate的核心概念和使用技巧,同时也为有经验的开发者提供了深入研究的素材。通过系统学习,开发者不仅能提升数据库操作的效率,还能更好地理解和应用...

    Hibernate Quickly 源代码

    通过深入研究《Hibernate Quickly 源代码》,开发者可以全面掌握Hibernate框架的使用,提高开发效率,同时也能了解到实际项目中如何解决常见的持久化问题。这是一份非常有价值的资源,对于想要提升Java数据库编程...

    hibernate第一个hibernate

    学习完基础后,可深入研究Hibernate的高级特性,如 Criteria API、Hibernate Search 和 JPA 规范等。 总之,"hibernate第一个hibernate"项目是一个绝佳的起点,它将引导你了解并掌握Hibernate的基本概念和操作。...

    spring和hibernate源文件

    通过深入研究 Spring 和 Hibernate 的源代码,开发者不仅可以提高自己的技能,还能更好地定制和优化应用程序,解决实际问题。同时,这也有助于跟踪框架的最新发展,以便及时掌握新技术和最佳实践。

    Hibernate官方中文参考手册+Hibernate开发指南+Hibernate的两本英文书籍

    《Hibernate的两本英文书籍》可能指的是更深入的原版文档或者专业著作,这些书籍通常会包含最新的技术信息和最佳实践,对于想要深入研究Hibernate或者保持技术更新的开发者来说是不可或缺的资源。可能涵盖的主题包括...

    孙卫琴hibernate source code2

    最后,`chapter6`深入研究了Hibernate的缓存机制。Hibernate提供了第一级缓存(Session级别的缓存)和第二级缓存(SessionFactory级别的缓存)。第一级缓存是默认开启的,每个Session都有一个独立的缓存,可以提高...

    Hibernate3.2.5.jar

    总的来说,"hibernate3.2.5.jar"文件是学习和开发使用Hibernate 3.2.5的重要资源,通过深入研究源码和示例程序,开发者可以更好地掌握ORM技术,提高Java应用的数据库处理效率。同时,了解这个版本的特性也能帮助理解...

    Hibernate源码

    在深入研究Hibernate源码时,可以关注以下关键点: - **实体管理**:了解实体生命周期(瞬态、持久化、托管和脱管),以及状态转换的过程。 - **HQL和Criteria API**:学习如何构建面向对象的查询,以及它们与原生...

    hibernate-distribution-3.6.2.Final-dist

    总之,`hibernate-distribution-3.6.2.Final-dist`源码包是学习和研究Hibernate的好资料,通过深入研究源代码,开发者不仅可以掌握ORM的基本原理,还能提升对Java和数据库设计的理解,为开发更高效、更稳定的应用...

    hibernate-3.5.6 源码

    这个资源是Hibernate 3.5.6版本的源码,对于理解ORM框架的内部工作原理、学习数据库交互以及深入研究Hibernate的实现机制非常有帮助。 1. **对象关系映射(ORM)**:ORM是Hibernate的核心特性,它允许开发者用Java...

    hibernate3.jar及其源代码文件

    **标题与描述解析** ...通过深入研究hibernate3.jar的源代码,开发者可以更好地了解这些概念如何在实际中实现,以及如何根据自己的需求进行定制和优化。这对于提升Java EE应用的开发效率和质量大有裨益。

    hibernate_third项目源码

    通过深入研究这个`hibernate_third`项目,你可以亲身体验到Hibernate在实际开发中的强大功能,同时也能提升你在ORM领域的技能。这个项目提供了丰富的示例,帮助你从实践中掌握各种查询技术,是学习和提升Hibernate...

    传智播客hibernate源码

    **标题与描述解析** 标题"传智播客hibernate源码"暗示了这是一个关于Hibernate框架...通过研究这些文件,学习者可以深入了解Hibernate的工作原理,提升数据库操作的技能,并了解如何在实际项目中有效地使用Hibernate。

    Hibernate DOC中文文档(学习Hibernate必备手册)

    《Hibernate DOC中文文档》是学习Hibernate框架的重要参考资料,它详细...无论是想要快速入门,还是深入研究,这份文档都是一份不可多得的学习资料。只要你耐心研读,掌握Hibernate并运用到实际项目中将不再是难题。

    Hibernate Soruce Code 源代码

    通过深入研究Hibernate源代码,我们可以更好地掌握Java持久化技术,提高编程效率。 1. Hibernate ORM框架概述:Hibernate是一个强大的ORM框架,它将Java对象与数据库表进行映射,实现了对象的透明持久化。这使得...

    hibernate-src.zip

    深入研究`hibernate-src.zip`中的源码,可以让我们理解Hibernate如何通过反射、代理、动态字节码等技术实现对象的持久化,以及其内部是如何优化SQL语句、处理缓存、管理事务的。这对于提升我们的Java编程技能,尤其...

Global site tag (gtag.js) - Google Analytics