`

Hibernate 检索方式2

阅读更多

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

紧接Hibernate 检索方式(一)

 

以下代码演示了 QBC 迫切左外连接 .

FetchMode.DEFAULT , 表示采用映射文件中配置得检索策略 .

FetchMode. JOIN

覆盖映射文件中配置的检索策略 , 在程序中显示指定

迫切左外连接检索策略 .

FetchMode.LAZY : 覆盖映射文件中配置的检索策略 , 中程序中

显示指定 延迟检索策略

List list = session.createCriteria(Person. class )

.setFetchMode( "adds" ,FetchMode. JOIN )

.add(Restrictions. eq ( "personName" , "jack" ))

.list();

 

以下代码演示了 QBC 内联接

List list = session.createCriteria(Adds.class)

.createAlias("person", "p")

.add(Restrictions.like("p.personName", "a", MatchMode.ANYWHERE))

.add(Restrictions.like("this.addName", "an", MatchMode.ANYWHERE))

.list();

 

 

 

投影查询是指查询结果仅包括部分实体或者实体的部分属性 . 投影是通过 select 关键字来实现的 .

 

以下代码通过投影查询返回记录数量 :

 

List list = session.createCriteria(Person. class )

.setProjection(Projections. rowCount ())

.add(

Restrictions. like ( "personName" , "a" , MatchMode. ANYWHERE ))

.list();

for ( int i=0;i<list.size();i++){

Integer count = (Integer)list.get(i);

System. out .println( "--- count =" +count);

}

 

 

 

 

 

以下代码通过 QBC 投影查询返回指定的列 :

Criteria criteria = session.createCriteria(Person. class );

criteria.setProjection(Projections. projectionList ().add(

Projections. property ( "personName" )).add(

Projections. property ( "email" )));

List list = criteria.list();

Iterator ite = list.iterator();

while (ite.hasNext()) {

Object[] object = (Object[])ite.next();

String personName = (String)object[0];

String email = (String)object[1];

}

 

 

 

在投影查询中使用 聚合函数 :

Criteria criteria = session.createCriteria(Person. class );

criteria.setProjection(

Projections. projectionList ()

.add(Projections. max ( "personid" ))

.add(Projections. min ( "personid" ))

.add(Projections. sum ( "personid" ))

.add(Projections. property ( "personName" ))

.add(Projections. avg ( "personid" ))

.add(Projections. count ( "personid" ))

.add(Projections. groupProperty ( "personName" )))

.addOrder(Order. asc ( "personName" ));

List list = criteria.list();

for ( int i = 0;i<list.size();i++){

Object[] object = (Object[])list.get(i);

Integer maxValue = (Integer)object[0];

Integer minValue = (Integer)object[1];

Integer sumValue= (Integer)object[2];

String personname = (String)object[3];

Double avgValue = (Double)object[4];

Integer countValue = (Integer)object[5];

}

 

 

以下代码演示了两个表关联后作投影查询 :

List list = session.createCriteria(Person.class)

.createAlias("adds","a")

.add(Restrictions.like

("personName", "a", MatchMode.ANYWHERE))

.add(Restrictions.like

("a.addName", "an", MatchMode.ANYWHERE))

.setProjection(Projections.projectionList()

.add(Projections.property("personid"))

.add(Projections.property("personName"))

.add(Projections.property("a.addsid"))

.add(Projections.property("a.addName")))

.list();

分享到:
评论

相关推荐

    day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询

    本教程将深入探讨"day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询"的主题,通过源码分析和实际工具的应用,来提升数据库查询的效率。 首先,我们了解Hibernate的检索方式。在Hibernate中,...

    day36 04-Hibernate检索方式:多表连接查询

    标题中的“day36 04-Hibernate检索方式:多表连接查询”表明这是一个关于Hibernate框架的教程,重点讲解如何在Hibernate中进行多表连接查询。在这个主题中,我们将深入探讨Hibernate的ORM(对象关系映射)机制以及...

    HIBERNATE检索策略

    标题:“HIBERNATE检索策略” 描述:本文深入解析了HIBERNATE的检索策略,为读者提供了一条清晰的学习路径,重点分析了HIBERNATE中的抓取策略及其应用场景,帮助开发者更有效地管理和优化数据加载过程。 在...

    Hibernate的检索方式

    ### Hibernate的五种检索方式详解 #### 一、导航对象图检索方式 导航对象图检索是一种常见的对象关联查询方式。这种方式通常用于加载已经存在于内存中的对象,并通过这些对象访问与其关联的对象。例如,在一个订单...

    Hibernate检索方式

    ### Hibernate检索方式详解 #### 一、概述 Hibernate是一个强大的对象关系映射(ORM)框架,它可以将Java对象与数据库表进行映射,使得开发者能够更方便地进行数据的持久化操作。在Hibernate中,提供了多种检索...

    hibernate5--4.检索方式及策略

    一、Hibernate检索方式 1. **HQL(Hibernate Query Language)**: HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是基于类和对象的。你可以通过HQL来查询、更新和删除对象,而无需关心底层的SQL语法。...

    java-Hibernate 检索

    Hibernate 是一个流行的 Java 持久层框架,它提供了多种检索数据的方式,包括导航对象图检索、OID 检索、HQL 检索、QBC 检索和本地 SQL 检索等。下面将详细介绍每种检索方式。 一、导航对象图检索 导航对象图检索...

    Hibernate数据检索(HQL)笔记

    ### Hibernate数据检索(HQL)知识点详解 #### 一、简介 Hibernate 是一款开源的对象关系映射(ORM)框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而极大地简化了数据访问层的开发工作。本文档基于...

    基于Spring的Hibernate Search全文检索功能示例

    3. **Hibernate Search**:作为Hibernate的一个扩展,Hibernate Search提供了基于Lucene的全文检索功能,使得在数据库中的数据可以被快速、精确地搜索。 **二、集成Hibernate Search** 1. **配置依赖**:首先,你...

    浪磬J2EE第一期 Hibernate专题 第六讲 检索方式

    一、Hibernate检索方式概述 Hibernate提供了多种检索数据的方法,以适应不同的需求场景。这些方法包括:HQL(Hibernate Query Language)、QBC(Query By Criteria)、Criteria API以及直接使用Session的get()和load...

    Hibernate的检索策略

    ### Hibernate的检索策略详解 #### 一、概述 在Java持久化框架Hibernate中,检索策略是一种重要的机制,它主要用于控制对象何时以及如何加载到应用程序内存中。合理的检索策略不仅可以提高应用性能,还能简化代码...

    hibernate基础 注解开发 检索

    Hibernate提供了多种方式来查询数据,包括HQL、QBC和本地SQL。 - **HQL (Hibernate Query Language)**:一种面向对象的查询语言,类似于SQL但更加面向对象。 - **QBC (Query By Criteria)**:基于标准的API提供了一...

    Hibernate 对象的状态检索

    本人在厦门邦初培训时候 使用的快速入门精简文档 Session缓存的作用 Session清理缓存的时间点 对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。...本地SQL检索方式

    hibernate面试题2

    1. **Hibernate检索策略**: - **立即检索(Eager Fetching)**:优点在于透明度高,方便导航关联对象,但可能导致过多的SELECT语句和内存浪费。 - **延迟检索(Lazy Fetching)**:应用程序可以根据需要决定何时...

    struts2 hibernate spring compass全文检索

    在本项目中,开发者利用SSH2(即Struts2、Hibernate和Spring的组合)作为基础框架,并引入Compass来实现全文检索功能,以此提升应用程序的数据查询效率和用户体验。 Struts2 是一个基于MVC(模型-视图-控制器)设计...

    使用 hibernate-search 实现全文检索及文档管理的例子

    **使用Hibernate Search实现全文检索及文档管理** 在Java开发中,全文检索和文档管理是常见的需求,特别是对于大型的企业级应用。Hibernate Search是Hibernate ORM框架的一个扩展,它提供了对数据库中的对象进行...

    hibernate的检索

    【Hibernate检索策略】 Hibernate提供三种主要的检索策略:立即检索、延迟检索和迫切左外连接检索。 1. **立即检索**:这种策略将立即加载关联的对象,无论对象是持久化状态还是游离状态。优点是应用程序可以方便...

Global site tag (gtag.js) - Google Analytics