`

简介hibernate查询方式

阅读更多
Java代码
get() and load()   
 
  session.get(Clazz, id);   
  session.load(Clazz, id);  

get() and load()

  session.get(Clazz, id);
  session.load(Clazz, id);
说明: load()与get()的区别
  请注意如果没有匹配的数据库记录,load()方法可能抛出无法恢复的异常(unrecoverable

exception)。 如果类的映射使用了代理(proxy),load()方法会返回一个未初始化的代理,直到你调用

该代理的某方法时才会去访问数据库。 若你希望在某对象中创建一个指向另一个对象的关联,又不想在

从数据库中装载该对象时同时装载相关联的那个对象,那么这种操作方式就用得上的了。 如果为相应类

映射关系设置了batch-size, 那么使用这种操作方式允许多个对象被一批装载(因为返回的是代理,无

需从数据库中抓取所有对象的数据)。
  如果你不确定是否有匹配的行存在,应该使用get()方法,它会立刻访问数据库,如果没有对应的行,会返回null。

  2. HQL

Java代码
// 返回一行记录   
  String hql = "from TOrder o where o.id = ?";   
  TOrder o = (TOrder) s.createQuery(hql)   
    .setParameter(0, orderId)   
    .uniqueResult();   
 
  // 命名参数   
  Query q = sess.createQuery("from DomesticCat cat where cat.name = :name");   
  q.setString("name", "Fritz");   
 
  // 位置参数   
  Query q = sess.createQuery("from DomesticCat cat where cat.name = ?");   
  q.setString(0, "Izi");   
 
  // 命名参数列表   
  Query q = sess.createQuery("from DomesticCat cat where cat.name in (:namesList)");   
  q.setParameterList("namesList", names);   
 
  // 分页查询   
  Query q = sess.createQuery("from DomesticCat cat");   
  q.setFirstResult(20);   
  q.setMaxResults(10);   
  List cats = q.list();   
 
  3. Criteria   
 
  List cats = sess.createCriteria(Cat.class)   
   .add( Restrictions.like("name", "Fritz%") )   
   .add( Restrictions.or(   
   Restrictions.eq( "age", new Integer(0) ),   
   Restrictions.isNull("age")   
   ) )   
   .addOrder( Order.asc("name") )   
   .addOrder( Order.desc("age") )   
   .list();   
 
  4. Native SQL   
 
  String treeSql = "" +   
   "select , level from tree t " +   
   " start with t.parent_id = 0 " +   
   " connect by prior t.id = t.parent_id";   
 
  List result = session.createSQLQuery(treeSql)   
   .addEntity("t", Tree.class)   
   .addScalar("level", Hibernate.INTEGER)   
   .list();   
 
  5. Named SQL queries(不推荐)   
 
  6. filter(不推荐)   
 
  7. Detached queries(还没测试)   
  The DetachedCriteria class lets you create a query outside the scope of a session, and   
 
then later execute it using some arbitrary Session
分享到:
评论
2 楼 joeyon 2011-08-31  
顶个  呵呵
1 楼 log4j_e 2010-09-25  
谢谢,学到了。

相关推荐

    Hibernate_query查询数据表中的一个字段.

    无论哪种查询方式,最后都会返回一个结果列表,你可以遍历这个列表来获取并处理查询到的`username`字段的值。 总结,Hibernate提供多种方式查询数据表中的字段,包括HQL、Criteria API和DetachedCriteria,选择合适...

    hibernate实现动态SQL查询

    在Hibernate中,我们通常使用HQL(Hibernate Query Language)或Criteria API进行查询,但这些方式并不支持复杂的动态查询。为了实现动态SQL,我们可以借助于Hibernate的QBC(Query By Criteria)和Criteria API,...

    Hibernate 多表连接分页查询示范项目

    本项目主要关注 Criteria API 的使用,这是一种基于 Java 对象的查询方式,更加灵活且易于理解和维护。 **Hibernate Criteria 查询** Criteria API 提供了一种类型安全的方式来构建动态查询。它允许开发者通过编程...

    hibernate 级联查询

    1. **Hibernate简介**:Hibernate是一个开源的Java ORM(对象关系映射)框架,它允许开发者用面向对象的方式来操作数据库,而无需关心底层的SQL语句。 2. **级联操作类型**:Hibernate支持多种级联类型,包括`SAVE_...

    hibernate将本地SQL查询结果封装成对象(最终).zip

    Hibernate支持两种类型的查询:原生SQL查询和Hibernate查询语言(HQL)。原生SQL查询允许开发者直接执行SQL语句,而HQL则是面向对象的查询语言,类似于SQL但更接近于Java。 4. 封装SQL查询结果为对象: - `...

    .net hibernate查询集合.doc

    接下来将详细介绍这些查询方式的具体用法。 #### 三、`from`子句 `from`子句是最基础的HQL查询方式,用于获取特定类的所有实例。例如,“from Student”将会返回Student类的所有实例。需要注意的是,在HQL中,大小...

    Hibernate 查询体系

    ### Hibernate 查询体系详解 #### 一、概述 Hibernate 是一款非常强大的对象关系映射(ORM)框架,它能够简化数据库操作,并将 ...理解并掌握 HQL 和其他查询方式对于使用 Hibernate 进行高效的数据访问至关重要。

    Hibernate HQL查询 分页查询 模糊查询.docx

    ### Hibernate HQL 查询详解 #### 一、HQL(Hibernate Query Language)简介 ...综上所述,HQL提供了强大且灵活的方式来查询Hibernate管理的对象,通过掌握上述技巧,可以更加高效地管理和操作数据。

    hibernate权威整理文档!

    【hibernate权威整理文档!...理解和掌握Hibernate的主要组件、配置以及查询方式,是Java开发者必备的技能之一。通过深入学习和实践,开发者可以更好地利用Hibernate来构建高效、稳定的持久层解决方案。

    hibernate知识简介.ppt

    【hibernate知识简介】 Hibernate 是一款流行的Java持久层框架,它主要负责处理对象与关系数据库之间的映射,实现对象关系映射(ORM),从而简化Java应用中的数据存取操作。ORM 解决了面向对象编程语言与关系型...

    Hibernate-基础联表模板

    Hibernate查询的结果可以是单个对象、对象集合,也可以是投影结果。通过ResultTransformer可以转换查询结果,使其满足特定需求。 综上所述,"Hibernate-基础联表模板"涵盖了Hibernate中关于联表查询的基础知识,...

    Hibernate的Template方法以及SQL简介

    下面是几种常见的SQL查询方式及其应用场景: 1. **GET查询** ```java Customer cust = session.get(Customer.class, 1); Set<Order> orders = cust.getOrders(); ``` 此方法用于根据主键获取指定的实体对象...

    hibernate 重点知识原创

    HQL 支持面向对象的查询,而 Criteria API 提供了更加面向对象的查询方式,Criteria Builder 则进一步提供了更强大的构建查询的能力。 总结来说,Hibernate 是一个强大的 ORM 工具,它通过简化数据库操作和提供对象...

    p6spy简介显示hibernate配置

    **P6Spy简介** P6Spy是一款开源的Java数据库监控工具,它允许开发者在不修改应用程序代码的情况下,透明地监控数据库活动。P6Spy通过拦截并记录JDBC调用来获取数据库查询、更新和其他操作的详细信息,这对于性能...

    hibernate简介及特例

    Criteria接口提供了一种基于对象的查询方式,更易于动态构造查询条件。 【Hibernate主键生成策略】 1. Assigned:主键由应用程序负责生成并在保存对象前设定。这种方式完全独立于数据库,但需要开发者维护主键的...

    Hibernate查询语言(HQL)

    ### Hibernate 查询语言 (HQL) #### 一、简介 Hibernate 查询语言(HQL)是一种功能强大的查询语言,它与 SQL 在语法上有一定的相似性,但 HQL 被设计成面向对象的语言,能够理解诸如继承、多态和关联等概念。这种...

    Hibernate电子书(全)

    `Query`接口允许使用HQL(Hibernate Query Language)或SQL进行查询,而`Criteria`API则提供了一种基于标准的查询方式,无需了解具体的SQL语法。对于数据的更新和删除,Hibernate同样提供了简单的方法,只需调用对应...

    基于hibernate的简单留言本

    6. ** Criteria 查询**: Hibernate提供了一种比SQL更面向对象的查询方式,Criteria API可以动态构建查询条件,更加灵活。 7. **事务(Transaction)**: 为了确保数据的一致性,Hibernate支持事务管理。在对数据库...

Global site tag (gtag.js) - Google Analytics