Hibernate3開始增加了通過property節(jié)點(diǎn)的lazy屬性,為特定的屬性指定延遲加載策略,以避免實(shí)體整體加載可能帶來的性能浪費(fèi),尤其是像長(zhǎng)文本之類的大字段。那么實(shí)現(xiàn)屬性延遲加載需要做兩件事:
1.修改映射配置文件,將需要延遲加載的字段增加lazy屬性并設(shè)置成true;
2.與實(shí)體和集合類型的延遲加載不同,Hibernate3屬性延遲加載機(jī)制在配置外,還需要用類增強(qiáng)器對(duì)二進(jìn)制Class文件進(jìn)行強(qiáng)化處理(借助ANT)
下面來演示下如何用ANT調(diào)用Hibernate類增強(qiáng)器對(duì)class文件進(jìn)行強(qiáng)化處理.
1.下載ANT,配置ANT環(huán)境;(如果有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目錄下,輸出路徑就設(shè)置為該目錄下的classes目錄,待增強(qiáng)的字節(jié)碼文件為classes目錄下的com/derek/known/hbm/
Knownquestions.class; 在命令行下切換到此目錄,執(zhí)行ant命令,即生成新的Knownquestions.class
posted on 2007-09-20 16:01
Derek.Guo 閱讀(1834)
評(píng)論(0) 編輯 收藏 所屬分類:
Java