- 浏览: 253555 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (232)
- 瞎扯两句 (8)
- 操作系统 (5)
- 工作笔记 (33)
- 设计模式 (1)
- java (57)
- Java IDE (7)
- hibernate (17)
- oracle (46)
- ms sql (2)
- spring (9)
- struts2 (0)
- javascript (16)
- java_code (2)
- java之集合 (2)
- java之线程 (4)
- java之IO (4)
- java之虚拟机 (6)
- java之异常 (0)
- EJB (4)
- XML (4)
- 数据结构-算法 (2)
- 架构设计 (5)
- 配置信息 (2)
- 阅读笔记 (6)
- IT专业英语 (1)
- PI (0)
- 单元测试 (1)
最新评论
检索策略包括 立即检索 延迟检索 迫切左外连接
类级别的可以用立即检索和延迟检索
关联级别可用以上三种。
延迟检索的原理是动态生成要检索的类的代理类的实例,这个代理类继承了要检索的类,有相关的类信息等,并且之初始化它的OID属性(即查询条件),其他属性皆为null,这样占用很少内存。
可以用Hibernate的静态方法initialize()在session范围内来显式的初始化。
if(!hibernate.isinitialized())
Hibernate.initialize(obj)
这样在session关闭后就可以用obj实例的get等方法。
有点需要注意的就是:
不论配置的lazy是否是true,session的get方法,query的list方法总是立即检索该对象(但是不会立即检索关联对象)。
增强延迟检索:。。。。。。
检索方式
HQL QBC(query by critiera) QBE(query by exampl)
QBC的分页查询:setFirstResult setmMaxresult
检索大哥对象:uniqueResult
HQL QBC 设置清理缓存模式 setFlushMode()
设置与session二级缓存的交互模式setCacheMode(读取,写入,刷新,正常,忽略)
还可以在映射文件中定义命名查询语句,并用session.getnamedquery("asd")来调用。
load与get方法的区别:
load:如果数据库中不存在与OID对应的记录,则抛出异常。(个人认为是因为load要建立查询对象的代理对象)
get:没有则返回null
GET方法源码 public Object get(String entityName, Serializable id) throws HibernateException {
LoadEvent event = new LoadEvent(id, entityName, false, this);
boolean success = false;
try {
fireLoad(event, LoadEventListener.GET);
success = true;
return event.getResult(); }
finally {
afterOperation(success);
}
}
LOAD方法源码
public Object load(String entityName, Serializable id) throws HibernateException {
LoadEvent event = new LoadEvent(id, entityName, false, this);
boolean success = false;
try {
fireLoad( event, LoadEventListener.LOAD );
if ( event.getResult() == null ) {
getFactory().getEntityNotFoundDelegate().handleEntityNotFound( entityName, id );
}
success = true;
return event.getResult(); }
finally {
afterOperation(success);
}
}
类级别的可以用立即检索和延迟检索
关联级别可用以上三种。
延迟检索的原理是动态生成要检索的类的代理类的实例,这个代理类继承了要检索的类,有相关的类信息等,并且之初始化它的OID属性(即查询条件),其他属性皆为null,这样占用很少内存。
可以用Hibernate的静态方法initialize()在session范围内来显式的初始化。
if(!hibernate.isinitialized())
Hibernate.initialize(obj)
这样在session关闭后就可以用obj实例的get等方法。
有点需要注意的就是:
不论配置的lazy是否是true,session的get方法,query的list方法总是立即检索该对象(但是不会立即检索关联对象)。
增强延迟检索:。。。。。。
检索方式
HQL QBC(query by critiera) QBE(query by exampl)
QBC的分页查询:setFirstResult setmMaxresult
检索大哥对象:uniqueResult
HQL QBC 设置清理缓存模式 setFlushMode()
设置与session二级缓存的交互模式setCacheMode(读取,写入,刷新,正常,忽略)
还可以在映射文件中定义命名查询语句,并用session.getnamedquery("asd")来调用。
load与get方法的区别:
load:如果数据库中不存在与OID对应的记录,则抛出异常。(个人认为是因为load要建立查询对象的代理对象)
get:没有则返回null
GET方法源码 public Object get(String entityName, Serializable id) throws HibernateException {
LoadEvent event = new LoadEvent(id, entityName, false, this);
boolean success = false;
try {
fireLoad(event, LoadEventListener.GET);
success = true;
return event.getResult(); }
finally {
afterOperation(success);
}
}
LOAD方法源码
public Object load(String entityName, Serializable id) throws HibernateException {
LoadEvent event = new LoadEvent(id, entityName, false, this);
boolean success = false;
try {
fireLoad( event, LoadEventListener.LOAD );
if ( event.getResult() == null ) {
getFactory().getEntityNotFoundDelegate().handleEntityNotFound( entityName, id );
}
success = true;
return event.getResult(); }
finally {
afterOperation(success);
}
}
发表评论
-
浅谈hibernate性能优化的几点建议
2012-05-17 16:41 746浅谈hibernate性能优化的几点建议1、针对oracle数 ... -
AAAAAAAAAAA
2012-05-17 16:22 785相信越来越多的web开发 ... -
hibernate 效率问题总结
2012-05-17 16:14 917一、“精心编写”的JDBC ... -
Hibernate 批量删除 问题
2012-05-17 15:24 854批量处理数据 通常, ... -
Hibernate 二级缓存
2012-04-20 10:35 898二级缓存 Hibernate 对数据的缓存包括两个级: ... -
hibernate对象的三种状态及之间的转换 .
2012-04-20 10:36 1112Hibernate的对象有3种状态,分别为:瞬时态(Trans ... -
spring+hibernate中处理oracle BLOB
2012-02-28 16:11 8661、配置hibernate: 1.1、配置hiber ... -
使用JDBC和Hibernate来写入Blob型数据到Oracle中(1)
2012-02-28 16:09 832转 Oracle的Blob字段比较特殊,他比long字段的性 ... -
HibernateTemplate 源码分析(三)OpenSessionInViewFilter
2012-02-20 11:45 1063OpenSessionInViewFilter作为一个filt ... -
HibernateTemplate 源码分析(二)
2012-02-20 10:44 1092在Spring中使用Hibernate的方法: 因为最终需 ... -
threadlocal threadlocalMap 在hibernate spring中的应用
2012-02-16 16:45 1172之前看资料,总说spring hibernate 是通过thr ... -
理解ThreadLocal
2012-02-16 15:35 722理解ThreadLocal . ThreadLocal是 ... -
Spring+Hibernate 之懒加载问题的解决
2012-02-15 17:30 724http://blog.csdn.net/aspdao/art ... -
关于OpenSessionInView
2012-02-15 16:49 1148关于OpenSessionInView . 简而言之,就是通 ... -
OpenSessionInViewFilter源码分析
2012-02-15 16:32 1161OpenSessionInViewFilter源码 ... -
HibernateTemplate 源码分析 之模板模式(一)
2012-02-15 16:04 146HibernateTemplate 从名成上看,其采用了设计模 ... -
HibernateTemplate 源码分析(一)
2012-02-15 16:02 1HibernateTemplate 从名成上看,其采用了设计模 ... -
关于配置文件中的property属性与set,get方法
2012-02-14 23:34 178一直以为在配置文件中有一个property,对应的class里 ... -
Hibernate.initialize(Obj)用法
2011-07-22 14:57 953转 在使用hibernate进行持久化时,有时需要动态的改 ...
相关推荐
这是HIBERNATE默认的抓取策略,当一个实体被加载时,与之关联的实体或集合并不会立即加载,而是采用延迟加载(Lazy Loading)的方式。当第一次访问关联实体或集合时,HIBERNATE会额外发送一条SELECT语句来抓取数据,...
### Hibernate的检索策略详解 #### 一、概述 在Java持久化框架Hibernate中,检索策略是一种重要的机制,它主要用于控制对象何时以及如何加载到应用程序内存中。合理的检索策略不仅可以提高应用性能,还能简化代码...
一、Hibernate检索方式 1. **HQL(Hibernate Query Language)**: HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是基于类和对象的。你可以通过HQL来查询、更新和删除对象,而无需关心底层的SQL语法。...
### Hibernate的五种检索方式详解 #### 一、导航对象图检索方式 导航对象图检索是一种常见的对象关联查询方式。这种方式通常用于加载已经存在于内存中的对象,并通过这些对象访问与其关联的对象。例如,在一个订单...
本文档基于魔乐科技李兴华老师的 Hibernate 教程笔记进行整理与扩展,主要介绍了 Hibernate 的数据检索方法,特别是 HQL(Hibernate Query Language)的使用技巧。 #### 二、HQL 基础 HQL 是一种面向对象的查询语言...
在现代Web应用开发中,全文检索功能已经成为提升用户体验的关键因素之一。Spring框架是Java领域最广泛使用的应用框架,而Hibernate则是流行的ORM(对象关系映射)解决方案。当这两个强大的工具结合,通过Hibernate ...
标题中的“day36 04-Hibernate检索方式:多表连接查询”表明这是一个关于Hibernate框架的教程,重点讲解如何在Hibernate中进行多表连接查询。在这个主题中,我们将深入探讨Hibernate的ORM(对象关系映射)机制以及...
本教程将深入探讨"day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询"的主题,通过源码分析和实际工具的应用,来提升数据库查询的效率。 首先,我们了解Hibernate的检索方式。在Hibernate中,...
### Hibernate检索方式详解 #### 一、概述 Hibernate是一个强大的对象关系映射(ORM)框架,它可以将Java对象与数据库表进行映射,使得开发者能够更方便地进行数据的持久化操作。在Hibernate中,提供了多种检索...
Hibernate 是一个流行的 Java 持久层框架,它提供了多种检索数据的方式,包括导航对象图检索、OID 检索、HQL 检索、QBC 检索和本地 SQL 检索等。下面将详细介绍每种检索方式。 一、导航对象图检索 导航对象图检索...
【Hibernate检索策略】 Hibernate提供三种主要的检索策略:立即检索、延迟检索和迫切左外连接检索。 1. **立即检索**:这种策略将立即加载关联的对象,无论对象是持久化状态还是游离状态。优点是应用程序可以方便...
### Hibernate基础:注解开发与检索 #### 一、Hibernate注解开发概述 **Hibernate**是一种流行的Java持久层框架,提供了对象关系映射(ORM)的功能,使得Java开发者能够更高效地进行数据库操作。注解作为Java SE 5...
hibernate3数据检索、抓取策略 、 注解的使用
本人在厦门邦初培训时候 使用的快速入门精简文档 Session缓存的作用 Session清理缓存的时间点 对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。...本地SQL检索方式
在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本教程重点聚焦于Hibernate的数据检索机制,特别是Hibernate查询语言(HQL...
本PPT描述了对SHH框架中hibernate数据检索功能的描述,用户可以更快的学习Hibernate数据检索
其中,Hibernate作为一种开放源码的对象关系映射(ORM)框架,因其能够简化Java应用程序与数据库之间的交互而备受青睐。Hibernate提供了一系列高级特性,如缓存管理、延迟加载、主动抓取等,这些特性大大提高了...