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"?>

<projectname="hibernatelazy"default="instrument"basedir=".">

<propertyname="lib.dir"value="./lib"/>

<propertyname="classes.dir"value="./classes"/>

<pathid="lib.class.path">

<filesetdir="${lib.dir}">

<includename="**/*.jar"/>

</fileset>

</path>

<targetname="instrument">

<taskdefname="instrument"classname="org.hibernate.tool.instrument.InstrumentTask">

<classpathpath="${classes.dir}"/>

<classpathrefid="lib.class.path"/>

</taskdef>

<instrumentverbose="true">

<filesetdir="${classes.dir}/com/derek/known/hbm">

<includename="Knownquestions.class"/>

</fileset>

</instrument>

</target>

</project>

其中注意

<propertyname="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

相关推荐