`

Hibernate的查询方式总结

阅读更多
1. get() and load()
  session.get(Clazz, id); 
  session.load(Clazz, id);

  说明: load()与get()的区别
  请注意如果没有匹配的数据库记录,load()方法可能抛出无法恢复的异常(unrecoverable exception)。 如果类的映射使用了代理(proxy),load()方法会返回一个未初始化的代理,直到你调用该代理的某方法时才会去访问数据库。 若你希望在某对象中创建一个指向另一个对象的关联,又不想在从数据库中装载该对象时同时装载相关联的那个对象,那么这种操作方式就用得上的了。 如果为相应类映射关系设置了batch-size, 那么使用这种操作方式允许多个对象被一批装载(因为返回的是代理,无需从数据库中抓取所有对象的数据)。
  如果你不确定是否有匹配的行存在,应该使用get()方法,它会立刻访问数据库,如果没有对应的行,会返回null。

2. HQL
  
// 返回一行记录 
  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
分享到:
评论

相关推荐

    Hibernate 查询方式总结

    ### Hibernate 查询方式总结 在Java开发中,Hibernate作为一款优秀的对象关系映射(ORM)工具,在简化数据库操作、提高开发效率方面发挥着重要作用。本文将详细介绍Hibernate中的几种常见查询方式,包括`get()`与`...

    Hibernate知识点总结

    HQL支持面向对象的查询方式,例如查询特定属性、执行聚合操作等。通过HQL,开发者可以更自然地表达查询需求,同时减少SQL语句的编写工作量。 #### 六、检索策略 在Hibernate中,检索策略是指控制对象何时从数据库...

    Hibernate的查询方式

    ### Hibernate的查询方式详解 #### 引言 Hibernate作为Java领域中最流行的ORM(Object-Relational Mapping)框架之一,提供了一系列高效、灵活的查询机制,旨在桥接对象模型与关系数据库之间的鸿沟。本文将深入...

    Hibernate 简单 PPT 总结

    深入QBC查询.md可能涵盖了Hibernate的Query By Criteria API,这是另一种查询数据库的方式,除了传统的HQL(Hibernate Query Language)外,开发者可以通过构建Criteria对象来执行动态查询,这种方式更接近面向对象...

    通用的hibernate查询

    【hibernate查询详解】 Hibernate,作为一款强大的Java对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者使用面向对象的...理解并熟练掌握这些查询方式,将有助于我们在Java开发中更好地运用Hibernate。

    hibernate中的查询方式

    ### Hibernate中的查询方式详解 #### 一、HQL查询(Hibernate Query Language) HQL是Hibernate提供的面向对象的查询语言,其语法与SQL相似但并非完全相同。HQL的一个显著优势在于它具有很好的跨数据库能力,这...

    Hibernate hql查询语法总结

    《Hibernate HQL查询语法详解》 Hibernate,作为Java领域中广泛应用的对象关系映射(ORM)框架,极大地简化了数据库操作。...在实际应用中,结合业务需求灵活运用这些查询方式,将有助于提升代码质量与可维护性。

    hibernate查询方法

    **Hibernate查询方法大全** Hibernate,作为Java领域中最流行的持久化框架之一,提供了多种查询数据的方法。这些方法使得开发者能够高效地从数据库中检索、更新和删除数据,无需编写大量SQL语句。本篇文章将深入...

    Hibernate连表查询 Hibernate连表查询

    根据提供的文件信息,我们可以深入探讨Hibernate中的连表查询方法及其应用。下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)...

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

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

    hibernate学习总结文档

    - **Query API**:基于 JPA 2.0,提供更现代的查询方式,可与 Criteria API 结合使用。 **关联关系** Hibernate 支持多种关联关系,如一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多...

    Hibernate课程的总结

    1. Session:是Hibernate的主要工作单元,负责保存、更新和删除对象,以及执行HQL(Hibernate查询语言)。 2. Transaction:处理数据的原子性,确保一组操作要么全部成功,要么全部失败。 **五、CRUD操作** 1. 插入...

    struts+hibernate查询所有记录

    ### Struts+Hibernate查询所有记录 #### 一、概述 在Java Web开发中,Struts与Hibernate是非常流行的框架组合,用于构建复杂的企业级应用。本文将详细介绍如何利用Struts和Hibernate来实现对Oracle数据库中所有...

    hibernate多表联合查询

    在Hibernate中,可以使用以下几种方式来实现多表联合查询: - **HQL (Hibernate Query Language)** - **Criteria API** - **Native SQL** 本文将重点介绍如何使用HQL和Native SQL来实现多表联合查询。 #### 三、...

    Hibernate4总结文档

    - 读取(Read):使用`Session.get()`或`Session.load()`根据ID获取对象,`Query`接口则提供了更灵活的查询方式。 - 更新(Update):调用`Session.update()`或`Session.saveOrUpdate()`更新对象。 - 删除...

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    8. **Criteria API和HQL**: Hibernate提供了HQL(Hibernate Query Language)和Criteria API两种查询语言,它们允许开发者以面向对象的方式来编写查询,比直接写SQL更加灵活和方便。 9. **缓存机制**: Hibernate...

    Hibernate三大类查询总结.doc

    在处理数据库查询时,Hibernate提供了三种主要的查询方式:Criteria查询、HQL(Hibernate Query Language)和本地SQL。本文将详细探讨这三种查询方式的区别与用法。 首先,Criteria查询是Hibernate提供的一种面向...

Global site tag (gtag.js) - Google Analytics