`
uule
  • 浏览: 6351975 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

小结Hibernate的查询方式(6种)

阅读更多

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(不推荐)

 

实际应用:http://uule.iteye.com/blog/941483

另参考(重要):

                  http://www.tup.com.cn/Resource/tsyz/027541-01.txt

            http://blog.csdn.net/ITshu/archive/2008/08/06/2774147.aspx


来源:   http://tech.it168.com/j/d/2006-10-23/200610231246535.shtml

分享到:
评论

相关推荐

    Hibernate分页查询小结

    Hibernate分页查询小结

    Hibernate的检索方式

    ### 小结 以上介绍了Hibernate的五种检索方式:导航对象图检索、OID检索、HQL检索、QBC检索以及本地SQL检索。每种检索方式都有其独特的应用场景和特点。在实际开发过程中,根据项目的需求和技术背景选择合适的检索...

    Hibernate 框架总结

    Hibernate是一个开源的Java框架,它为对象关系映射(Object Relational Mapping, ORM)提供了一种实现方式,允许Java程序员以面向对象的方式操作数据库。从Hibernate的核心概念、工作原理到其实现细节,Hibernate...

    Hibernate操作Oarcle中Clob、Blob字段小结

    这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...

    关于Clob类型在Hibernate中 的应用小结

    在Hibernate中,Clob类型的字段通常有两种处理方式: 1. **传统JDBC方式**: 在这种模式下,开发者需要直接操作Clob对象,通过PreparedStatement的setClob方法设置Clob值,通过ResultSet的getClob方法获取Clob值。...

    hibernate 学习笔记小结

    ### Hibernate学习笔记小结 #### 一、简介与配置 **Hibernate** 是一款开源的对象关系映射(ORM)框架,它允许开发人员将Java对象自动持久化到数据库表中,从而简化了数据访问层的开发工作。在Spring框架中,...

    Hibernate的框架的总结

    Hibernate是一个开源的对象关系映射(ORM)框架,它为Java应用提供了一种高效、灵活的方式来处理数据库交互。通过Hibernate,开发者可以使用面向对象的方式操作数据库,而无需编写复杂的SQL语句。本文将深入探讨...

    hibernate小结

    ORM框架如Hibernate,允许开发者以面向对象的方式来处理数据库交互,避免了直接编写SQL语句,简化了数据操作。 【搭建Hibernate开发环境】 1. 创建一个Java工程或Web工程。 2. 添加必要的jar包,包括Hibernate的...

    Struts2+Hibernate+Spring项目小结――Hibernate部分

    在构建企业级应用时,常常会采用Struts2、Hibernate和Spring这三种技术进行整合,形成SSH框架。这里我们主要讨论SSH项目中的Hibernate部分,它是一个强大的对象关系映射(ORM)框架,使得开发者可以方便地将数据库...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     1.3 小结  1.4 思考题 第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 ...

    spring+hibernate出错小结

    NULL 博文链接:https://tcrct.iteye.com/blog/243252

    MAPPING Hibernate方法小结.doc

    【MAPPING Hibernate方法小结】 Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者用面向对象的方式操作数据库。以下是对Hibernate中几种关键概念的详细解释: 1. **对象之间的关系**: - **...

    Hibernate查询语言(HQL)

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

    关于Oracle的 Clob数据类型在Hibernate中的应用小结

    Oracle的Clob数据类型在数据库中用于存储大对象(Large Object),如长文本、XML文档等大量字符数据。...理解并熟练掌握Clob在Hibernate中的处理方式,对于开发高效且稳定的数据库应用程序至关重要。

    Hibernate映射

    hibernate 映射关系 小结

Global site tag (gtag.js) - Google Analytics