`

Hibernate属性延迟加载

阅读更多

 Hibernate3开始增加了通过property节点的lazy属性,为特定的属性指定延迟加载策略,以避免实体整体加载可能带来的性能浪费,尤其是像长文本之类的大字段。那么实现属性延迟加载需要做两件事:
       1.修改映射配置文件,将需要延迟加载的字段增加lazy属性并设置成true;
       2.与实体和集合类型的延迟加载不同,Hibernate3属性延迟加载机制在配置外,还需要用类增强器对二进制Class文件进行强化处理(借助ANT)
       下面来演示下如何用ANT调用Hibernate类增强器对class文件进行强化处理.
 
        1.下载ANT,配置ANT环境;(如果有Eclipse,直接就可以用它的ant);
        2.新建ANT的build.xml脚本;

<?xml version="1.0" encoding="UTF-8"?>
<project name="hibernatelazy" default="instrument" basedir=".">
      <property name="lib.dir" value="./lib"/>
      <property name="classes.dir" value="./classes"/>
 
      <path id="lib.class.path">
            <fileset dir="${lib.dir}">
                   <include name="**/*.jar"/>
             </fileset>
       </path>
       <target name="instrument">
           <taskdef name="instrument" classname="org.hibernate.tool.instrument.InstrumentTask">
                    <classpath path="${classes.dir}"/>
                    <classpath refid="lib.class.path"/>
            </taskdef>
            <instrument verbose="true">
                     <fileset dir="${classes.dir}/com/derek/known/hbm">
                           <include name="Knownquestions.class"/>
                     </fileset>
             </instrument>
        </target>
</project>
其中注意
<property name="lib.dir" value="./lib"/>所需的JAR文件路径
<property name="classes.dir" value="./classes"/>编译输出路径

就我的工程而言:
 
我把build.xml放在了WEB-INF目录下,输出路径就设置为该目录下的classes目录,待增强的字节码文件为classes目录下的com/derek/known/hbm/Knownquestions.class; 在命令行下切换到此目录,执行ant命令,即生成新的Knownquestions.class

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lansky07/archive/2008/10/21/3115742.aspx

分享到:
评论

相关推荐

    hibernate属性延时加载如何操作、相应的jar包

    hibernate3的属性延时加载是个很有意义的东西,它能让你把你不想加载到内存里的东西在查询的时候排除。 我相信来下载这个东西的人都已经很了解这一块的知识了,只是配不对那个类增强器才来下载我这个文件。 这些...

    Hibernate集合属性的延迟加载.doc

    在 Hibernate 框架中,延迟加载...总的来说,Hibernate 的集合属性延迟加载是一个强大的工具,可以有效减少内存占用和提高应用程序性能。正确理解和使用延迟加载,可以帮助我们构建高效、可扩展的 Java 应用程序。

    hibernate 延迟加载深入剖析

    ### Hibernate延迟加载深入剖析 #### 一、概述 在现代软件开发中,特别是与数据库交互的应用场景下,Hibernate作为一款流行的Java持久层框架,提供了多种高效处理数据的技术。其中,延迟加载(Lazy Loading)是一...

    Hibernate 延迟加载剖析与代理模式应用

    总的来说,Hibernate的延迟加载是通过在映射文件中配置延迟加载策略,以及利用Java动态代理技术,实现对集合属性的按需加载。它降低了系统的内存压力,提高了数据库操作的效率,是Hibernate优化性能的重要手段之一。...

    Hibernate的延迟加载

    在Hibernate中启用实体对象的延迟加载,需在实体的映射配置文件中设置`lazy="true"`属性。例如: ```xml &lt;hibernate-mapping&gt; ... &lt;/hibernate-mapping&gt; ``` 当执行`session.load()`方法时,如`User user = ...

    Hibernate延迟加载以及利用Spring

    - `lazy="proxy"`:表示Hibernate将为`Dept`实体创建一个代理对象,只有当真正访问到`Dept`对象的相关属性时,Hibernate才会发起数据库查询,加载实际的`Dept`对象。 - `fetch="select"`:默认值,表示在查询`Emp`时...

    hibernate延迟加载解决

    要在Hibernate中启用实体对象的延迟加载,需要在映射文件中为相应的类添加`lazy="true"`属性,例如: ```xml ... ``` **工作原理:** 当执行如下代码时: ```java User user = (User) session.load(User....

    Flex 与 Hibernate 的延迟加载问题

    在开发Flex与Hibernate集成的应用时,延迟加载(Lazy Loading)是一个常见的挑战,因为Flex客户端无法直接理解和处理Hibernate的延迟加载机制。延迟加载是一种优化策略,它允许关联的对象在真正需要时才被加载,而...

    Hibernate lazy延迟加载

    在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种重要的优化策略,它的核心思想是“延迟加载”或“按需加载”。默认情况下,当一个实体被加载时,并不会立即加载其关联的对象或集合,而是在真正需要...

    【北大青鸟内部教程】jsp中关于Hibernate延时加载的问题

    在处理大数据量或者复杂数据结构时,Hibernate引入了延时加载(Lazy Loading)机制,以提高应用程序的性能。本文将深入探讨在JSP(JavaServer Pages)环境中,如何理解和应对Hibernate的延时加载问题。 首先,我们...

    Hibernate延时加载与lazy机制.doc

    Hibernate的延迟加载(Lazy Loading)和懒加载机制(Lazy Initialization)是优化ORM框架性能的重要策略。这个机制的主要目的是提高程序的效率,减少不必要的数据库交互,只在真正需要数据时才去加载它们。以下是对...

    Hibernate延迟加载

    在Hibernate中,延迟加载分为三种主要类型:实体对象的延迟加载、集合类型的延迟加载以及属性延迟加载(在Hibernate 3及以上版本支持)。 ### 实体对象的延迟加载 在Hibernate映射文件中,可以通过将`&lt;class&gt;`标签...

    Hibernate延迟加载介绍.doc

    本文将深入探讨Hibernate中的延迟加载,包括实体对象、集合类型和属性的延迟加载。 一、实体对象的延迟加载 在Hibernate中,实体对象的延迟加载可以通过在映射文件中设置`lazy="true"`来启用。例如,对于名为`...

    属性延迟加载

    属性延迟加载是Hibernate框架中的一种优化策略,旨在提高数据加载效率,减少内存占用,特别是对于包含大字段(如长文本)的实体属性。在Hibernate3版本中,通过`property`节点的`lazy`属性,我们可以指定某个属性...

    hibernate延迟加载

    在 Hibernate 中,延迟加载支持对实体对象、集合以及属性级别的延迟加载。 #### 三、实体对象的延迟加载 实体对象的延迟加载是 Hibernate 中最基础也是最常用的延迟加载方式之一。要启用实体对象的延迟加载,需要...

    Hibernate之数据加载方式

    3. **按需加载(On-Demand Loading)**:懒加载的一种特例,只在调用特定方法或属性时加载关联数据。 4. **集合加载策略**:对于一对多或多对多的关系,可以设置不同的集合加载策略,如`FetchType.LAZY`和`...

    Hibernate 延迟加载

    ### Hibernate延迟加载详解 #### 什么是Hibernate延迟加载? 在探讨Hibernate延迟加载之前,我们先简要回顾一下Hibernate框架。Hibernate是一种流行的Java持久层框架,它提供了对象关系映射(ORM)的功能,允许...

Global site tag (gtag.js) - Google Analytics