WEB开发网
开发学院WEB开发Jsp Hibernate 深入研究之 Criteria 阅读

Hibernate 深入研究之 Criteria

 2008-01-05 09:40:56 来源:WEB开发网   
核心提示: 最近在项目中使用 SPRing 和 Hibernate 进行开发,有感于 Criteria 比较好用,Hibernate 深入研究之 Criteria,在查询方法设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装,所以现在对 Hibernate 的 Criteria 深入研究一下, Criter

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

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

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

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

DetachedCriteria 来返回查询结果。

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

下面就对 Criterion 和 Projection 进行具体说明。

    Hibernate 深入研究之 Criteria(图一)

点击查看大图

图 1

 

    Criterion 是 Criteria 的查询条件。

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


Tags:Hibernate 深入 研究

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接