- 浏览: 1493237 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
http://www.java-cn.com/club/html/07/n-1807.html
先解释一下标题的含义:为了实现一个组合条件查询,先是使用HQL书写,然后改用Query by Criteria方式,再尝试Query by Example,最后自己实现了一个增强的Example类来解决问题。
5n;H1H(Yb.AmoJAVA中文站社区门户(D*BS&zP6x;R
关于此问题的起源请阅读我以前的一个帖子:http://www.iteye.com/post/523791。在该帖子中已经实现了从HQL到QBC的转变,在这里就不再重复了。
z+MsO1f k+L`4RaJAVA中文站社区门户 h.C3h1Q m5r1_
在上一个帖子中没有模型类Product及Category的代码,为了方便讨论补充如下: JAVA中文站社区门户!iWY)ehYt&a2x(A
JAVA中文站社区门户 DP,o@+yLk
Java代码
1.public class Category {
2. private Long id; 3. private String name; //类别名称 4.
5. //Other code omitted 6.}
7.
8.public class Product { 9. private Long id; 10. private String name; //商品名称 11. private Category category; //商品类别 12. private Date expDate; //有效期 13. private Float price; //单价 14.
15. //Other code omitted 16.}
public class Category {
private Long id;
private String name; //类别名称
//Other code omitted
}
public class Product {
private Long id;
private String name; //商品名称
private Category category; //商品类别
private Date expDate; //有效期
private Float price; //单价
//Other code omitted
}
JAVA中文站社区门户a5W-F1vB(Qr
;k2du$W4n@/U Us/?Q&H从前一个帖子中可以看到,使用QBC后代码有所减少,但还是得把构造查询条件的代码写死,这非常不爽。重读了《Java Persistence with Hibernate》一书,发觉QBE是个好东东,于是尝试用改造代码如下: JAVA中文站社区门户K%d(j:Q~
JAVA中文站社区门户P;Uf,BO$[ZQB.U)X
Java代码
1.public List<Product> getProducts(Product product) {
2. final Example exampleProduct = 3. Example.create(product).
4. enableLike(MatchMode.ANYWHERE).
5. excludeZeroes();
6.
7. return (List<Product>) getHibernateTemplate().execute( 8. new HibernateCallback() { 9. public Object doInHibernate(Session session) throws HibernateException { 10. Criteria crit =
11. session.createCriteria(Product.class). 12. add(exampleProduct);
13. return crit.list(); 14. }
15. }
16. );
17.}
public List<Product> getProducts(Product product) {
final Example exampleProduct =
Example.create(product).
enableLike(MatchMode.ANYWHERE).
excludeZeroes();
return (List<Product>) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Criteria crit =
session.createCriteria(Product.class).
add(exampleProduct);
return crit.list();
}
}
);
}
发表评论
-
自定义用户类(UserType)的使用
2011-08-04 10:46 1843学习hibernate有段时间了,最近复习这门技术时看到了自定 ... -
技巧:利于ThreadLocal模式管理Session
2011-08-02 10:31 1254在利用Hibernate开发DAO模块时,我们和Session ... -
Hibernate中的回调与拦截机制
2011-07-27 17:31 1452在某些情况下,我们需要对实体的CURD操作进行捕获并执行一些操 ... -
HibernateTemplate中HibernateCallback的事务
2011-07-04 14:41 1431目的:使用HibernateTemplate执行execute ... -
Hibernate的复杂用法HibernateCallback
2011-07-04 14:40 1313HibernateTemplate还提供一种更加灵活的方式来操 ... -
Hibernate session FlushMode有五种属性
2011-07-04 13:59 17181、NEVER:已经废弃了,被MANUAL取代了2 MANUA ... -
数据库持久层——浅谈hibernate中的Session
2011-07-01 22:49 1657大多数情况下,Session 管理的目标聚焦于通过合理的设 ... -
详解Hibernate Session
2011-07-01 22:42 1476这里介绍Hibernate Session,Ses ... -
HttpSession与Hibernate中Session的区别
2011-07-01 22:41 1275一、javax.servlet.http.HttpSess ... -
巧用SQLQuery中的addScalar
2011-06-02 17:16 5734当我们用HQL进行子查询的时候,如select * from ... -
hibernate中SQLQuery的addEntity();方法
2011-04-13 14:48 2881如果使用原生sql语句进行query查询时,hibernate ... -
Hibernate的clear(),flush(),evict()方法详解
2011-03-24 11:18 17651.Clear 方法 无论是Load 还是 G ... -
hibernate模糊查询-Restrictions.ilike & Expression.like
2011-03-11 10:32 16341Criteria criteria = session.c ... -
Hibernate分页查询小结
2011-03-10 11:14 1818通常使用的Hibernate通常是三种:hql查询,QBC查询 ... -
current_session_context_class
2011-03-07 15:31 1278此设置的作用如下: What does sessionFac ... -
Hibernate的拦截器和监听器
2010-12-14 15:06 1375核心提示:最近项目需要,用到了Hibernate的拦截器和 ... -
孙卫琴.精通Hibernate:Java对象持久化技术详解_触发器使缓存与数据库不一致
2010-12-14 08:46 1374p198 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_优化报表查询的性能
2010-12-13 17:51 1259p332 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_查询结果类型
2010-12-13 17:34 1293p329 -
孙卫琴.精通Hibernate:Java对象持久化技术详解_投影查询
2010-12-13 17:31 1406p325
相关推荐
1. Hibernate:Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者在Java应用中使用面向对象的方式来操作数据库。它通过提供一套API和元数据,将Java类与数据库表进行映射,从而简化了数据库操作。 2. ...
Query By Example(QBE)则是通过实例化一个对象,并设置其属性值,然后将这个对象作为查询的模板,Hibernate会根据对象的属性值生成对应的WHERE子句进行查询。这种方式在处理简单查询时非常直观,但当查询条件变得...
QBC是Hibernate提供的一个高级查询接口,它允许开发者通过实例化Criteria对象来构造查询条件,从而实现动态查询。QBC的优点在于它可以更好地映射到对象模型,避免了直接编写SQL语句,提高了代码的可读性和可维护性。...
3. **s2sh_relation22_QBE.zip**: QBE(Query By Example)是Hibernate的另一种查询方式,它允许根据一个对象实例来构建查询。这个压缩包可能包含了关于QBE的示例,帮助你理解如何基于对象实例进行查询。 通过学习...
2. 查询语言(HQL):Hibernate查询语言,类似于SQL,但面向对象,可以方便地进行复杂查询。 3. Criteria查询:提供动态构建查询的方式,无需预先编写HQL,更灵活。 4. Query By Example(QBE):根据给定对象实例的...
QBE是一种基于实例的查询方式,通过创建一个对象实例作为模板,然后根据该实例的属性进行匹配查询。例如,如果有一个`Student`类的对象`s`,其`giftortoy`字段为"2",那么通过`session.createCriteria(Student.class...
Hibernate 是一个开放源代码的 ORM(对象关系映射)框架,它为 Java 开发者提供了一种高效、高性能的方式将 Java 应用程序中的对象映射到数据库表中。在 Hibernate 中进行查询是其核心功能之一,本文将详细介绍 ...
首先,我们来看看Hibernate,这是一个流行的ORM(对象关系映射)框架,它简化了Java应用程序与数据库之间的交互。与传统的JDBC相比,Hibernate提供了一种对象封装的方式,使得开发者可以更专注于业务逻辑,而不是...
Criteria 查询机制主要包括 QBE(Query By Example)、QBC(Query By Criteria)和 HQL(Hibernate Query Language)三种方式。 QBE(Query By Example) QBE 是一种基于示例的查询机制,它可以根据一个示例对象来...
- **报表工具之JasperReports**:一个强大的报表生成工具,支持多种数据源并能够生成各种格式的报表。 - **使用Action返回数据生成Excel**:结合Struts2等框架实现将查询结果导出为Excel文件的功能。 - **Struts2 + ...
Hibernate 是一个开源的对象关系映射框架,它允许开发者将Java对象和关系数据库的数据进行映射,从而简化数据访问。以下是对Hibernate的一些关键知识点的详细解释: 1. **配置**: Hibernate 的配置通常通过`...
QBE允许通过一个实体示例来构建查询条件,从而获取与示例相匹配的对象集合。例如: ```java Cat exampleCat = new Cat(); exampleCat.setName("Tom"); List<Cat> cats = session.createCriteria(Cat.class) .add...
- **Hibernate**:是一个ORM(Object-Relational Mapping)框架,用于将Java对象与数据库表进行映射,简化数据库操作。 - **JPA(Java Persistence API)**:是Java标准的持久化API,提供了一套规范,而Hibernate...
在Java的持久化框架Hibernate中,Criteria API提供了一种动态构造SQL查询的方式,它允许开发者在运行时构建查询,而无需硬编码HQL(Hibernate Query Language)或原生SQL语句。Criteria API提供了丰富的功能,包括但...
QBE是通过提供一个对象实例作为模板来执行查询的方法。例如,在给定的代码片段中: ```java Student s = new Student(); s.setGiftOrToy("2"); Criteria cri = session.createCriteria(Student.class); cri.add...
4. **QBE(Query By Example)**:基于示例对象进行查询,将一个对象作为模板,匹配数据库中符合此模板的对象。 5. **SQL**:直接执行 SQL 查询,适用于复杂或特定场景的需求。 **检索策略** 1. **延迟检索(加载...
- 实现树状结构是Hibernate中的一个高级主题,通常涉及到递归查询或使用特定的树结构算法。 #### HQL查询语言 - **Hibernate Query Language (HQL)** 是一种面向对象的查询语言,类似于SQL,但更加灵活和强大。 - *...
`这将执行一个SQL查询并将结果映射到`Student`实体类。 Criteria API使得在Hibernate中构建复杂的查询变得更加灵活和直观,避免了HQL的语法学习成本,同时减少了因为SQL注入带来的安全风险。它通过API的方式提供了...