如果實(shí)體對(duì)象中存在大文本或者圖像等屬性字段,有必要將該種字段設(shè)置為延遲加載,即在需使用該字段的時(shí)候再加載該字段的內(nèi)容。
屬性延遲加載的實(shí)現(xiàn):
1、在實(shí)體映射文件中,通過property節(jié)點(diǎn)的lazy屬性,可以為特定的屬性制定延遲加載策略。
<hibernate-mapping>
??<class?
?????name="test.Tuser"
?????table="T_USER"
?????batch-size="5">
?????<id?name="id"?columen="id">
????????<generator?class="native"/>
?????</id>
?????<property?
?????????name="name"
?????????column="name"/>
?????<property?
?????????name="age"
?????????column="age"/>
?????<property
?????????name="resume"
?????????column="resume"
?????????lazy="true"/>??????????????? //這里將個(gè)人簡(jiǎn)歷(大文本字段)設(shè)置為延遲加載。
???</class>
</hibernate-mapping>
2、配置了lazy屬性之外,還要借助類增強(qiáng)器對(duì)二進(jìn)制Class文件進(jìn)行強(qiáng)化處理(buildtime bytecode instrumentation)。通過ANT調(diào)用Hibernate類增強(qiáng)器對(duì)TUser.class文件進(jìn)行強(qiáng)化處理。腳本如下:
<project?name="HibernateSample"?default="instrument"?basedir=".">
??<property?name="lib.dir"?value="./lib"/>
??<property?name="classes.dir"?value="./bin"/>
??
??<path?id="lib.class.path">
?????<fileset?dir="${lib.dir}">
?????????<include?name="**/*.jar"/>
?????</fileset>
???
??<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.redsaga/hibernate/db/entity">
?????????? <include?name="TUser.class"/>
??????? </fileset>
???? </instrument>
? </target>
</project>
??
注:腳本中涉及的配置路徑,根據(jù)項(xiàng)目目錄修改。
posted on 2006-08-15 15:54
想飛的魚 閱讀(2102)
評(píng)論(0) 編輯 收藏 所屬分類:
hibernate