1.延迟加载的范例
<many-to-one name="departmentInfo" class="com.plane.beans.DepartmentInfo" lazy="false" fetch="select">
2.延迟加载的定义
延迟加载:比如查询一张表时,有外键对应另一张表,可以使用延迟加载,这样就不会把外键对应表的数据加载。lazy是延迟加载,默认是延迟加载。主要是为了系统的性能,当一张表引用到另外一张表时,如果不是立即需要另外一张表的内容,就可以采取延迟加载,直到要用到时才加载另外一张表。延迟加载的作用就是增加系统的性能度,得到你想要的数据,你不想要的数据不会给你查出来
3.手动延迟加载
其实手动延迟加载比较好,又提高了系统的性能,想要的时候就加载,不要就不用具体如下:在取数据的时候代码中写一段就行:
Hibernate.initialize(s.getGradeclass());就行,就代表对象s中加载gradeclass这张表的数据!
4.fetch和lazy
fetch 和 lazy 主要是用来级联查询的。
fetch参数指定了关联对象抓取的方式是select查询还是join查询,select方式时先查询返回要查询的主体对象(列表),再根据关联外键 id,每一个对象发一个select查询,获取关联的对象,形成n+1次查 询;而join方式,主体对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询。如果你的关联对象是延迟加载的,它当然不会去查询关联对象。 另外,在hql查询中配置文件中设置的join方式是不起作用的(而在所有其他查询方式如get、criteria或再关联获取等等都是有效的),会使用 select方式,除非你在hql中指定join fetch某个关联对象。fetch策略用于定义 get/load一个对象时,如何获取非lazy的对象/集合。 这些参数在Query中无效。
5.cascade和inverse
cascade 和 inverse 主要是用来级联插入和修改的
inverse 属性默认是false的,表示由己方来维护关系。cascade="all" 时候能级联操作(all指定了操作的程度),而none的时候只是维持两者之间的关系(如果inverse="false")在一对多映射中,一的一方要设
<set inverse="true" casecade="save-update" />,多的一方要设<many-to-one inverse=false />
inverse=true作用: 这里关系是由儿子维护的,所以如果只是往父亲里加入儿子,不给儿子设置父亲的话session.save(parent),就不会保存儿子!
因为父亲有个孩子的集合,他无法知道哪个孩子的父亲id已经指向自己了,所以对于每一个孩子,都要更新父亲使他只想自己,而这个关系由孩子维护就好多了, 每个孩子只有一个父亲,只有设置过的才需要更新,所以显然,这个父子关系由孩子来维护比较省力,减轻了数据库的负担。
分享到:
相关推荐
### Hibernate延迟加载以及利用Spring #### 一、Hibernate延迟加载概念与原理 在理解Hibernate的延迟加载机制之前,我们首先需要了解什么是延迟加载。延迟加载(Lazy Loading)是一种设计模式,其核心思想是在真正...
《Hibernate延迟加载与代理模式解析》 在Java的持久化框架Hibernate中,延迟加载(Lazy Load)是一项重要的优化策略,其核心目标是提高系统性能,减少内存占用,避免不必要的数据库交互。延迟加载允许我们在需要...
### Hibernate延迟加载详解 #### 一、什么是延迟加载? 延迟加载是一种优化技术,在软件开发中广泛应用于各种场景,尤其在数据库交互中尤为重要。其核心思想是仅在确实需要某个资源时才加载它,而非一开始就加载...
综上所述,Hibernate的懒加载策略是通过代理对象和回调机制实现的,旨在按需加载数据,减少不必要的数据库操作,提高系统效率。合理使用懒加载,可以显著优化数据访问性能,但同时也需要考虑其可能带来的问题和挑战...
然而,如果在`Session`关闭后尝试访问关联对象,会抛出`LazyInitializationException`异常,因为延迟加载策略只在`Session`打开的状态下有效。 **延迟加载的生效期** 延迟加载的生效时间与`Session`的生命周期相同...
在处理大数据量或者复杂数据结构时,Hibernate引入了延时加载(Lazy Loading)机制,以提高应用程序的性能。本文将深入探讨在JSP(JavaServer Pages)环境中,如何理解和应对Hibernate的延时加载问题。 首先,我们...
Hibernate的延迟加载(Lazy Loading)和懒加载机制(Lazy Initialization)是优化ORM框架性能的重要策略。这个机制的主要目的是提高程序的效率,减少不必要的数据库交互,只在真正需要数据时才去加载它们。以下是对...
本文将详细探讨 Hibernate 的各种延迟加载策略及其应用场景。 #### 二、Fetching 策略 Fetching 策略定义了 Hibernate 在执行查询时如何获取关联的数据。主要有以下几种: 1. **Join Fetching**:这是一种将主表...
具体而言,当`constrained`属性设置为`true`时,并且`lazy`属性启用,表示该关联将采用懒加载策略。 - **多对一映射(Many-to-One)**:对于多对一映射,默认情况下已经启用了懒加载,这是为了减轻系统负载。若要...
Hibernate延迟加载是ORM框架Hibernate中的一个重要特性,它旨在提高应用程序的性能和效率。延迟加载(Lazy Loading)策略允许我们仅在需要访问一个对象或其属性时才从数据库加载它们,而不是在初始加载实体时就一次...
《Hibernate延迟加载详解》 Hibernate作为Java领域中的一个强大的对象关系映射框架,提供了许多优化数据库操作的策略,其中之一便是延迟加载(Lazy Loading)。延迟加载机制旨在减少不必要的性能消耗,只在真正需要...
在Java的持久化框架Hibernate中,数据访问优化是至关重要的,而抓取策略(Fetch Strategy)和懒加载(Lazy Loading)则是实现这一目标的关键技术。本文将深入探讨这两个概念,并通过具体的案例进行分析。 首先,让...
集合类型的延迟加载是Hibernate延迟加载机制中最能显著提升性能的部分。在Hibernate中,集合类型的延迟加载通过使用自定义的集合类实现,如`net.sf.hibernate.collection.Set`,而非标准的`java.util.Set`。这样,...
### Hibernate延迟加载详解 #### 一、概述 Hibernate 是一种常用的 Java 持久层框架,它能够将 Java 应用程序与底层数据库之间建立桥梁,简化数据访问逻辑。为了提高应用程序性能,Hibernate 提供了多种优化手段,...
在 Hibernate 框架中,延迟加载(Lazy Loading)是一种优化数据访问性能的重要技术。它允许我们只在真正需要数据时才从数据库加载,避免一次性加载大量数据导致的内存消耗和性能瓶颈。当我们处理与实体相关的集合...
本文将深入探讨几种解决Flex与Hibernate延迟加载问题的方法,并着重讲解使用Gilead的方案。 1. **LCDS的Hibernate Adapter**:Adobe LiveCycle Data Services (LCDS) 提供了一个Hibernate适配器,可以处理延迟加载...
本案例主要探讨的是Hibernate的延迟加载(Lazy Loading)机制,这是一种优化数据库访问性能的重要策略。延迟加载允许我们在需要数据时才去加载,而不是在初始化对象时一次性加载所有关联数据,从而减少了内存消耗和...