`

hibernate有几种检索方式以及对比

阅读更多

在hibernate开发过程中,查询是最多用到的。我们肯定会问自己一个问题:
Hibernate的检索方式有很多,load/get检索,HQL(find,Query)检索,QBC(Criteria,QBE)检索以及本地数据库SQL检索.
那么,在实际应用中到底选择哪一种检索好?它们之间的检索有哪些联系和区别呢?

答:
哪一种检索并无根本的优劣,而是要看不同的情况,结合各种查询的优点和缺点,考虑采用哪种检索会更加简单和合适一点。

HQL功能最强大,适合各种情况,但是动态条件查询构造起来很不方便
Criteria最适合动态条件查询,不太适合统计查询,QBE还不够强大,只适合相当简单的查询
NativeSQL可以实现特定数据库的SQL,但是可移植性就牺牲了

Hibernate2的Criteria功能不够完善,所以Hibernate2上面可用的只有HQL和NativeSQL,Hibernate3的Criteria已经非常强大了。

针对web应用来说,大部分常规查询都是动态条件查询,所以首选使用Criteria,并且Hibernate3提供了DetachedCriteria,可以在web层构造好DetachedCriteria再进入session执行查询,非常方便实用的特性。

但是涉及到统计查询和非常复杂的关联查询,Criteria就无能为力了,这种情况下我选择使用HQL。

最后如果必须使用某些数据库的特性,例如Oracle的"...connect with ... by"这样的SQL,则选择使用NativeSQL。

分享到:
评论

相关推荐

    Hibernate学习指南pdf

    Hibernate的核心API围绕着几个关键组件展开: - **Configuration**: 负责管理数据库连接信息,通过加载配置文件(如myhibernate.xml)来初始化框架。 - **映射文件**: 定义了Java对象与数据库表之间的映射规则,是...

    解决Hibernate中MySQL的中文排序

    这通常是由于字符集设置、数据库排序规则以及Hibernate的配置等因素导致的。本文将深入探讨如何解决这些问题,确保MySQL数据库中的中文数据能按照正确的顺序进行排序。 首先,我们需要了解MySQL字符集的基础知识。...

    图像检索毕业设计开题报告+文献综述+外文翻译

    资料部分,如“hibernate_reference 中文.pdf”和“hibernate_reference日文.pdf”,虽然不是直接关于图像检索,但Hibernate是一个流行的Java持久化框架,可能用于实现图像数据库的后端存储。这部分资料可能帮助理解...

    Java Persistence with Hibernate

    4. **查询语言**:深入学习Hibernate Query Language (HQL)和Criteria API,这是两种用于从数据库检索数据的主要方式。对比SQL,理解它们的优势和使用场景。 5. **事务管理**:探讨在Hibernate中如何处理事务,包括...

    Hibernate学习资料

    - **Hibernate Query Language (HQL)检索方式**: HQL是一种面向对象的查询语言,可以使用`Session.createQuery`方法创建`Query`对象来进行查询。 - **DetachedCriteria检索方式**: 这种检索方式允许创建与特定`...

    hibernate开发指南.rar

    5. **Criteria查询**:提供了一种动态构建SQL查询的方式,无需编写硬编码的HQL(Hibernate Query Language),可以根据条件灵活地进行数据检索。 6. **HQL查询**:Hibernate特有的查询语言,类似于SQL,但更面向...

    hibernate3.2中文参考.pdf

    这部分内容介绍了Hibernate的基本概念,包括其架构设计、核心组件、工作原理以及与传统数据访问方法的对比等。通过这一章节的学习,读者可以建立起对Hibernate整体框架的认识。 #### 2. 配置与映射 这部分内容主要...

    Data Persistence Frameworks Hibernate

    以下是几种常见的数据持久化框架: 1. **JDBC(Java Database Connectivity)**:这是一种广泛使用的数据库访问技术,允许Java应用程序连接各种关系型数据库。 2. **EJB(Enterprise JavaBeans)**:特别是其中的...

    Hibernate 课件 pdf

    - **查询和数据检索**: Hibernate 提供了多种查询方式,包括 Criteria API 和 HQL (Hibernate Query Language),使得开发者能够更灵活地进行数据检索。 - **事务管理**: Hibernate 提供了事务管理功能,支持数据库...

    hibernate 持久层优化

    - **`jdbcTemplate.queryForList`**:通常用于执行JDBC级别的查询,效率介于上述几种方法之间。 在实际应用中,可以根据具体的查询需求选择最合适的查询方式,以达到最优的性能。 #### 四、选择正确的批量处理方法...

    hibernate 中HQL语句查询学习笔记

    **HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及关联关系的查询。 ##### 默认数据库表和数据 在本文档...

    安博Hibernate最全培训资料内部版

    - **HQL**(Hibernate Query Language)是一种面向对象的查询语言,用于执行对持久化对象的检索操作。 - **特点**: - **面向对象**:HQL查询的对象是对象而非数据库表,支持多态性。 - **区分大小写**:HQL中的...

    投票系统 strut2 +hibernate

    - **Hibernate ORM**:Hibernate作为流行的ORM(对象关系映射)工具,使得开发者可以用面向对象的方式操作数据库,减少了SQL的编写量,提高了开发效率。 - **Oracle数据库**:Oracle是一种关系型数据库管理系统,...

    Hibernate之HQL查询

    在Hibernate中,HQL(Hibernate Query Language)是其内置的一种面向对象的查询语言,它是SQL的面向对象版本,用于检索和操作持久化对象。HQL查询的使用极大地提高了开发效率,因为它将数据操作与具体的数据库结构...

    日电光学.doc

    ### Hibernate的几种检索方式 1. **查询语言检索**: - **HQL(Hibernate Query Language)**:这是一种面向对象的查询语言,它允许开发人员使用类名和属性名来构造查询语句。例如,`from Employee e where e....

    compass内部分享

    为了评估Compass在实际应用中的性能表现,可以通过以下几种方式来进行测试: 1. **新数据插入速度**:比较使用Compass和不使用Compass时新记录的插入速度。 2. **旧数据更新速度**:测试更新现有记录的速度差异。 3...

    数据库框架

    它提供了一种高效、便捷的方式来管理和操作数据库,使得开发人员可以专注于业务逻辑而不是底层的SQL语句。在本文中,我们将深入探讨数据库框架的核心概念、优势以及如何在实际项目中应用。 首先,数据库框架通常是...

    javaHibernateStruts

    Hibernate通过映射Java类到数据库表,使得开发者可以用面向对象的方式处理数据库操作,而无需直接编写SQL语句,极大地提高了开发效率和代码可维护性。 **Struts** 是一个开源的MVC框架,它主要负责处理HTTP请求并将...

    框架性能分析

    Hibernate提供了强大的查询语言HQL和 Criteria API,使得数据检索更为灵活。尽管如此,Hibernate在处理大量数据时可能会面临性能问题,因为它需要进行大量的对象实例化和缓存管理,这在高并发场景下可能成为瓶颈。 ...

Global site tag (gtag.js) - Google Analytics