网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  hibernate 深入研究之 criteria     
  文章作者:未知  文章来源:水木森林  
  查看:83次  录入:管理员--2007-11-17  
 

   最近在项目中使用 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 操作符进行来联结查询条件集合。

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

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

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

example exampleuser =example.create(u)

.ignorecase() // 忽略大小写

.enablelike(matchmode.anywhere);

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

 hibernate 深入研究之 criteria(图二)

点击查看大图

2

      

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) 方法加入到查询条件中去。

 hibernate 深入研究之 criteria(图三)

点击查看大图

3

      

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

 
 
上一篇: java对word、excel、pdf等操作综合文章    下一篇: 在java程序中运行外部类文件
  相关文档
用vj++6.0的j/direct调用dll 11-17
swing读书笔记 11-17
剖析java的中文问题及建议最优解决方法 03-03
关于java中文乱码问题一些解决方案和经验 11-17
java入门:深入讨论正则表达式快速入门 12-26
shift 方法 11-16
java线程简介(无处不在的线程) 11-17
一个applet-servlet通讯的例子 11-17
新手入门:用editplus配置java编译环境 11-16
java理论与实践:哈希 11-17
j2ee 和 .net之间的对比 11-17
java.util包 11-17
通过windowsxpembedded更新代理应用qfe 11-17
求出e=1+1/1!+1/2!+1/3!+……+1/n!+……的近似值的java applet.. 11-17
开发框架:深入分析jsf与struts的异同 12-24
深入浅出java设计模式之备忘录模式 11-16
struts开发指南之mvc架构实际应用 11-17
对使用java socket网络编程的详细讲解 11-16
apache geronimo 1.0 finally 版本发布 11-17
j2ee mvc模式jsf与struts的异同 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息