知识大全 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语句 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Criteria
深入浅出Hibernate的属性查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 《深入浅出H
驯服Tiger之深入研究枚举类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 基础知识
Hibernate查询方法之探析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! :QBE(Que
Hibernate初学之优缺点 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
精通Hibernate之映射继承关系(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 把每个
精通Hibernate之映射继承关系(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在域模
精通Hibernate之映射继承关系八 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由于关系数
精通Hibernate之映射继承关系三 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <h
精通Hibernate之映射继承关系二(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 把每