知识大全 Hibernate 深入研究之 Criteria

Posted 条件

篇首语:顾虑太多难以起步,背负太多难走远路。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate 深入研究之 Criteria相关的知识,希望对你有一定的参考价值。

Hibernate 深入研究之 Criteria  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

  如图 Hibernate 设计了 CriteriaSpecification 作为 Criteria 的顶级接口 其下面提供了 Criteria 和 DetachedCriteria

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

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

  DetachedCriteria 来返回查询结果

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

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

  

  图

    

  Criterion 是 Criteria 的查询条件

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

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

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

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

  Example exampleUser =Example create(u)

   ignoreCase() // 忽略大小写

   enableLike(MatchMode ANYWHERE);

  // 对 String 类型的属性 无论在那里值在那里都匹配 相当于 %value%

  图

  

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

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

  Porperty forName( color ) in(new String[] black red write ); 则可以创建一个 Project 实例 通过 criteria 的 add(Project) 方法加入到查询条件中去

  图

  

cha138/Article/program/Java/ky/201311/28317

相关参考

知识大全 hibernate.的QBC语句

hibernate.的QBC语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Criteria

知识大全 深入浅出Hibernate的属性查询

深入浅出Hibernate的属性查询  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  《深入浅出H

知识大全 驯服Tiger之深入研究枚举类型

驯服Tiger之深入研究枚举类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  基础知识    

知识大全 Hibernate查询方法之探析

Hibernate查询方法之探析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  :QBE(Que

知识大全 Hibernate初学之优缺点

Hibernate初学之优缺点  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 精通Hibernate之映射继承关系(二)

精通Hibernate之映射继承关系(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  把每个

知识大全 精通Hibernate之映射继承关系(一)

精通Hibernate之映射继承关系(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在域模

知识大全 精通Hibernate之映射继承关系八

精通Hibernate之映射继承关系八  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于关系数

知识大全 精通Hibernate之映射继承关系三

精通Hibernate之映射继承关系三  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  <h

知识大全 精通Hibernate之映射继承关系二(图)

精通Hibernate之映射继承关系二(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  把每