Hibernate Criteria简单概述

开发 后端
这里介绍Hibernate Criteria,Hibernate 设计了 CriteriaSpecification 作为 Criteria 的顶级接口,其下面提供了 Criteria 和 DetachedCriteria 。

本文向大家介绍Hibernate Criteria,可能好多人还不了解Hibernate Criteria,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

最近在项目中使用 Spring 和 Hibernate 进行开发,有感于 Criteria 比较好用,在查询方法设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装。所以现在对 Hibernate Criteria 深入研究一下。《 Hibernate Reference 》及网上其它一些资料对 Criteria 已经做了很多介绍。本文主要是从 Criteria 的结构入手来进行分析。

Hibernate 设计了 CriteriaSpecification 作为 Criteria 的***接口,其下面提供了 Criteria 和 DetachedCriteria 。

Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离线的,创建时无需 Session , DetachedCriteria 提供了 4 个静态方法 forClass(Class) 或 forEntityName(Name) 进行 DetachedCriteria 实例的创建。Spring 的框架提供了getHibernateTemplate().findByCriteria(detachedCriteria) 方法可以很方便地根据DetachedCriteria 来返回查询结果。

Hibernate Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode( 联合查询抓取的模式 ) ,设置排序方式。对于 Criteria 还可以设置 FlushModel (冲刷 Session 的方式)和 LockMode (数据库锁模式)。

下面就对 Criterion 和 Projection 进行详细说明。

Criterion和Projection


Criterion 是 Criteria 的查询条件。

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

Criterion 的实例可以通过 Restrictions 工具类来创建, Restrictions 提供了大量的静态方法,如 eq (等于)、 ge (大于等于)、 between 等来方法的创建 Criterion 查询条件( SimpleExpression 实例)。除此之外, Restrictions 还提供了方法来创建 conjunction 和 disjunction 实例,通过往该实例的 add(Criteria) 方法来增加查询条件形成一个查询条件集合。

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

  1. Example exampleUser =Example.create(u).ignoreCase()   
  2. // 忽略大小写  
  3. .enableLike(MatchMode.ANYWHERE);  
  4. // 对 String 类型的属性,无论在那里值在那里都匹配。相当于 %value%  

 【编辑推荐】

  1. Hibernate对数据索引进行缓存
  2. 剖析Hibernate主键生成几种常用方式
  3. 浅析Hibernate实现实体对象延迟加载
  4. Hibernate集合类型的延迟加载特性
  5. 概括Hibernate属性延迟加载
责任编辑:佚名 来源: IT168
相关推荐

2009-09-22 15:10:22

Hibernate映射

2009-09-24 13:03:38

Hibernate C

2009-06-30 16:46:45

Criteria进阶查

2009-06-18 10:07:03

CriteriaHibernate

2009-06-26 16:15:04

Criteria的用法Hibernate

2009-06-30 16:44:10

Criteria基本查

2009-06-17 14:17:40

Criteria条件查Hibernate

2009-06-30 16:55:19

2009-09-29 16:04:29

Hibernate S

2009-06-29 08:48:41

Hibernate缓存

2009-09-23 17:03:08

Hibernate S

2009-09-22 09:13:43

Hibernate D

2009-09-21 17:55:14

Hibernate O

2009-09-25 16:27:33

Hibernate S

2009-09-23 09:47:23

Hibernate e

2009-06-18 12:59:39

Criteria Qu深入浅出Hiberna

2009-09-28 15:14:45

Hibernate S

2009-09-23 10:41:10

对象标识符Hibernate

2009-09-25 10:00:47

Hibernate映射

2009-09-22 17:47:03

Hibernate s
点赞
收藏

51CTO技术栈公众号