隨筆-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 閱讀(1842) 評論(0)  編輯  收藏 所屬分類: Java
          MSN:envoydada@hotmail.com QQ:34935442
          主站蜘蛛池模板: 聂荣县| 湾仔区| 若羌县| 洪洞县| 德昌县| 萨嘎县| 石门县| 襄垣县| 攀枝花市| 沂南县| 德保县| 岫岩| 交城县| 徐汇区| 景泰县| 益阳市| 黑河市| 霸州市| 宁陕县| 共和县| 顺义区| 龙山县| 昌图县| 秦安县| 桦南县| 喀喇沁旗| 屏东县| 崇义县| 平南县| 四子王旗| 呼图壁县| 句容市| 汕头市| 哈密市| 石景山区| 蓬莱市| 桑日县| 石泉县| 昌江| 顺义区| 靖州|