<!--
@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检索方式:简单查询及别名查询"的主题,通过源码分析和实际工具的应用,来提升数据库查询的效率。 首先,我们了解Hibernate的检索方式。在Hibernate中,...
标题中的“day36 04-Hibernate检索方式:多表连接查询”表明这是一个关于Hibernate框架的教程,重点讲解如何在Hibernate中进行多表连接查询。在这个主题中,我们将深入探讨Hibernate的ORM(对象关系映射)机制以及...
标题:“HIBERNATE检索策略” 描述:本文深入解析了HIBERNATE的检索策略,为读者提供了一条清晰的学习路径,重点分析了HIBERNATE中的抓取策略及其应用场景,帮助开发者更有效地管理和优化数据加载过程。 在...
### Hibernate的五种检索方式详解 #### 一、导航对象图检索方式 导航对象图检索是一种常见的对象关联查询方式。这种方式通常用于加载已经存在于内存中的对象,并通过这些对象访问与其关联的对象。例如,在一个订单...
### Hibernate检索方式详解 #### 一、概述 Hibernate是一个强大的对象关系映射(ORM)框架,它可以将Java对象与数据库表进行映射,使得开发者能够更方便地进行数据的持久化操作。在Hibernate中,提供了多种检索...
一、Hibernate检索方式 1. **HQL(Hibernate Query Language)**: HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是基于类和对象的。你可以通过HQL来查询、更新和删除对象,而无需关心底层的SQL语法。...
Hibernate 是一个流行的 Java 持久层框架,它提供了多种检索数据的方式,包括导航对象图检索、OID 检索、HQL 检索、QBC 检索和本地 SQL 检索等。下面将详细介绍每种检索方式。 一、导航对象图检索 导航对象图检索...
### Hibernate数据检索(HQL)知识点详解 #### 一、简介 Hibernate 是一款开源的对象关系映射(ORM)框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而极大地简化了数据访问层的开发工作。本文档基于...
3. **Hibernate Search**:作为Hibernate的一个扩展,Hibernate Search提供了基于Lucene的全文检索功能,使得在数据库中的数据可以被快速、精确地搜索。 **二、集成Hibernate Search** 1. **配置依赖**:首先,你...
一、Hibernate检索方式概述 Hibernate提供了多种检索数据的方法,以适应不同的需求场景。这些方法包括:HQL(Hibernate Query Language)、QBC(Query By Criteria)、Criteria API以及直接使用Session的get()和load...
### Hibernate的检索策略详解 #### 一、概述 在Java持久化框架Hibernate中,检索策略是一种重要的机制,它主要用于控制对象何时以及如何加载到应用程序内存中。合理的检索策略不仅可以提高应用性能,还能简化代码...
Hibernate提供了多种方式来查询数据,包括HQL、QBC和本地SQL。 - **HQL (Hibernate Query Language)**:一种面向对象的查询语言,类似于SQL但更加面向对象。 - **QBC (Query By Criteria)**:基于标准的API提供了一...
本人在厦门邦初培训时候 使用的快速入门精简文档 Session缓存的作用 Session清理缓存的时间点 对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。...本地SQL检索方式
1. **Hibernate检索策略**: - **立即检索(Eager Fetching)**:优点在于透明度高,方便导航关联对象,但可能导致过多的SELECT语句和内存浪费。 - **延迟检索(Lazy Fetching)**:应用程序可以根据需要决定何时...
在本项目中,开发者利用SSH2(即Struts2、Hibernate和Spring的组合)作为基础框架,并引入Compass来实现全文检索功能,以此提升应用程序的数据查询效率和用户体验。 Struts2 是一个基于MVC(模型-视图-控制器)设计...
**使用Hibernate Search实现全文检索及文档管理** 在Java开发中,全文检索和文档管理是常见的需求,特别是对于大型的企业级应用。Hibernate Search是Hibernate ORM框架的一个扩展,它提供了对数据库中的对象进行...
【Hibernate检索策略】 Hibernate提供三种主要的检索策略:立即检索、延迟检索和迫切左外连接检索。 1. **立即检索**:这种策略将立即加载关联的对象,无论对象是持久化状态还是游离状态。优点是应用程序可以方便...