隨筆-86  評論-33  文章-0  trackbacks-0
                 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
          posted on 2007-09-20 16:01 Derek.Guo 閱讀(1836) 評論(0)  編輯  收藏 所屬分類: Java
          MSN:envoydada@hotmail.com QQ:34935442
          主站蜘蛛池模板: 南溪县| 独山县| 昌图县| 乌兰察布市| 湟源县| 七台河市| 宁阳县| 丽江市| 宁明县| 文山县| 临潭县| 石首市| 怀集县| 长乐市| 博湖县| 云梦县| 滦南县| 崇仁县| 普定县| 青冈县| 菏泽市| 红河县| 广西| 永吉县| 遂川县| 云安县| 正安县| 红河县| 乌鲁木齐县| 陇川县| 靖远县| 二连浩特市| 贵港市| 汝城县| 衡东县| 津市市| 沭阳县| 乌海市| 荔波县| 莱州市| 东城区|