`
diaolanshan
  • 浏览: 173127 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Hibernate 检索策略

阅读更多

Hibernate的检索策略可以分为类级别的检索策略和关联级别的检索策略。

类级别可选的检索策略包括:立即加载和延迟加载,在类级别上,hibernate默认的检索策略为延迟加载,即lazy=ture

类级别的load检索策略:

立即加载:

    Customer customer = (Customer)session.load(Customer.class,new Long(1));

    当上面一条语句执行到时,hibernate会立即输出以下语句:

    select * from customers where id = 1;

    这个时候customer就已经实例化了。

延迟加载:

    Customer customer = (Customer)session.load(Customer.class,new Long(1));

    上面语句执行到时hibernate不会立即查询customer表,而是返回customer类的代理类的实例。

     这个代理类有以下的特征:

     1)Hibernate在运行时动态生成,它扩展了customer类,因此它继承了customer的所有属性和方法,但是它的实现对于应用程序是透明的。

     2)当hibernate创建customer代理类实例时,仅仅初始化了它的OID,其他属性都为null,因此这个代理类占用的内存很少。

     3)当程序第一次访问代理类的实例时,hibernate会初始化代理类实例,这时才真正区数据库查询。但是如果仅仅是方位代理类的getId(),hibernate仍然不会区访问数据库。

以上讨论的是类级别load的检索策略,如果是使用session的get 和 find接口进行数据查询的话不关class的检索策略设置为什么都会使用立即检索策略。

   如果使用load进行查询(不关是立即加载还是延迟加载),都会生成customer的代理类实例,这样我们在判断customer==null时就一定为false,而不能准确的知道数据库中是否存在这样的实例。

   (不推荐使用load,用起来麻烦)



关联级别的检索策略

关联级别的检索策略分为立即检索(默认的检索方式)、延迟检索和outer-join检索


batch-size的使用

在进行立即检索的时候,例如使用如下的sql语句:select * from customer;会立即去加载customer所关联的order对象,并且会产生多条select 语句,一个customer执行一次,而如果使用batch-size属性,会一次加载多条customer的order list,这样就会减少和数据库的交互。同样,在进行延迟加载的时候也会出现这样的问题。



fetch 和 lazy 主要是用来级联查询的,    而 cascade 和 inverse 主要是用来级联插入和修改的

分享到:
评论

相关推荐

    HIBERNATE检索策略

    介绍了HIBERNATE的检索策略,可以此作为指引进行学习

    Hibernate的检索策略

    Hibernate的检索策略包括类级别检索策略和关联级别检索策略。

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

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

    Hibernate学习总结

    学习成长路,Hibernate总结: 1.Hibernate入门优缺点、 2.Hibernate的操作CRUD、 3.主键生成机制、 4.持久化对象的状态、 ...8.Hibernate检索策略(fetch抓取策略)、 9.二级缓存、 10.Hbernate的检索方式(HQL语句)

    hibernate3数据检索、抓取策略 、 注解的使用

    hibernate3数据检索、抓取策略 、 注解的使用

    SSH笔记-检索策略(lazy、fetch、batch-size)

    hibernate的类级别检索策略和检索策略的lazy、fetch、batch-size属性使用

    Hibernate知识点总结

    Hibernate框架知识点的梳理;对HQL检索、检索策略、以及如何配置详细的进行描述

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

     16.1 Hibernate的检索策略简介  16.2 类级别的检索策略  16.2.1 立即检索  16.2.2 延迟检索  16.3 一对多和多对多关联的检索策略  16.3.1 立即检索(lazy属性为“false”)  16.3.2 延迟检索(lazy属性为...

    精通hibernate

    Hibernate入门 OR映射技术 通过Hibernate API操纵数据库 检索策略和方式 数据库事务、并发、缓存与性能优化 高级配置。

    Hibernate 对象持久化

    一份我在厦门邦初学习 的快速入门ppt 内容有: 对象持久化基础知识 Hibernate应用开发基础 ...Hibernate的检索策略 Hibernate检索数据的方式 数据库事务与并发处理 组件及组成关系映射 综合项目应用:Struts+Hibernater

    08.拓薪教育-hibernate4.3的hibernate.cfg.xml基本配置.part2

    高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...

    Hibernate 课件及源代码

    内容涵盖安装 Hibernatetools 插件、Session 核心方法、持久化对象生命周期、对象关系映射(1-n、1-1、n-n、继承映射)、检索策略、检索方式(对象导航图、OID 检索、HQL、QBC、本地SQL)、Hibernate 一\二级缓存、...

    Hibernate4学习基础教程(26集)

    内容涵盖安装 Hibernatetools 插件、Session 核心方法、持久化对象生命周期、对象关系映射、检索策略、检索方式、Hibernate 一\二级缓存、管理 Session、批量处理等 Hibernate 企业级开发的核心技术。

    Hibernate基础教程

    文档内容包括:Hibernate入门、OR映射技术、通过Hibernate API操纵数据库、检索策略和方式、数据库事务、并发、缓存与性能优化、高级配置

    08.拓薪教育-hibernate4.3的hibernate.cfg.xml基本配置.part1

    高级Hibernate4开发技术:ORM思想,hibernate介绍,hibernate.cfg.xml配置,hbm.xml映射文件详解,主键生成策略使用,PO对象状态及状态的转换分析、一级缓存,Hibernate数据检索技术,Hibernate高级映射技术,...

    hibernate入门与概述

    hibernate入门与概述。介绍对象-关系 映射基础,映射对象标识符,映射一对多关联关系,操纵持久化对象,hibernate的检索策略。

    Hibernate java对象持久化技术.ppt

    Hibernate入门 OR映射技术 通过Hibernate API操纵数据库 检索策略和方式 数据库事务、并发、缓存与性能优化 高级配置

Global site tag (gtag.js) - Google Analytics