`

hibernata的查询方式

阅读更多

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

分享到:
评论

相关推荐

    Hibernate查询方式代码示例

    **Hibernate查询方式详解** 在Java世界中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将深入探讨Hibernate 3.x版本中的查询方式,包括基本查询、HQL(Hibernate Query ...

    hibernate查询方法

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

    Hibernate的查询方式

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

    hibernate的查询方式介绍和hibernate的批处理和连接池配置hibernate

    ### Hibernate 查询方式与批处理及连接池配置详解 #### 一、Hibernate 查询方式介绍 Hibernate 是一款优秀的 ORM(对象关系映射)框架,它能够极大地简化数据库操作,并提供多种查询方式来满足不同的业务需求。 #...

    Hibernate学习笔记和资料

    hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置...hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式

    通用的hibernate查询

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

    hibernate中的查询方式

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

    hibernate面试题2

    9. **Hibernate查询方式**: - **SQL**:直接执行SQL查询。 - **Criteria API**:面向对象的查询方式。 - **HQL(Hibernate Query Language)**:面向对象的查询语言,支持属性、参数、关联、分页和统计函数查询...

    Hibernate连表查询 Hibernate连表查询

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

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

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

    三种查询方式跟踪Hibernate源码

    本文将详细阐述通过三种查询方式跟踪Hibernate源码的方法,帮助开发者更好地掌握其工作原理。 首先,我们来看第一种查询方式:HQL(Hibernate Query Language)查询。HQL是Hibernate专有的SQL方言,允许开发者以...

    struts+hibernate查询所有记录

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

    hibernate多表联合查询

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

    Hibernate查询练习小例子

    利用MYSQL数据库提供的样例数据库world建立的查询小例子。已经建立好了数据库对应的...本项目主要是为了练习使用Hibernate查询数据库。如果有什么问题可以发站内信或者邮件asddf14@hotmail.com。我会尽量解答一下~~~

    hibernate查询详解

    hibernate查询详解 在Java开发中,Hibernate作为一款强大的ORM(Object-Relational Mapping)框架,极大地简化了数据库操作。本文将详细介绍Hibernate的五种查询方式,包括HQL查询、Criteria方法、动态查询...

    Hibernate查询语言HQL.PPT

    4. 使用 Hibernate 条件 API:提供了类型安全的面向对象的方式执行查询。 5. 使用本地 SQL 查询:Hibernate 只关心把 JDBC 结果集映射到持久对象图。 使用 HQL 的优点: * HQL 是一种面向对象的查询语言,易于学习...

    hibernate

    **六、Hibernate 查询方式** 1. **HQL**: Hibernate 专有的查询语言,类似SQL,但操作的是对象。 2. **Criteria API**: 动态构建查询条件,更加面向对象的查询方式。 3. **Native SQL**: 直接使用原生SQL进行查询,...

    六种方式实现hibernate查询

    六种方式实现Hibernate查询 Hibernate是一个功能强大的持久层框架,它提供了多种方式来查询数据库。下面我们将详细介绍六种方式实现Hibernate查询。 HQL查询 HQL(Hibernate Query Language)是Hibernate自己的...

    hibernate里面的 两种查询

    Hibernate提供了两种主要的查询方式:离线查询(Criteria API)和HQL(Hibernate Query Language)语句查询。这两种查询方法各有特点,适用于不同的场景,使得开发者可以根据实际需求灵活选择。 1. Hibernate ...

    hibernate实现动态SQL查询

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

Global site tag (gtag.js) - Google Analytics