Hibernate属性延迟加载
2008-10-21 10:10
288 查看
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
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
相关文章推荐
- Hibernate 集合属性的延迟加载
- Hibernate 延迟加载,lazy属性配置。以及org.hibernate.LazyInitializationException
- Hibernate性能调优--集合属性的延迟加载
- Hibernate各类概念-属性延迟加载lazyload
- hibernate annotation方式实现属性级延迟加载
- Hibernate延迟加载之属性延迟加载
- Hibernate延时加载---集合属性的延迟加载
- Hibernate集合属性的延迟加载
- Hibernate 延迟加载类属性
- Hibernate 5 & JPA 2.1 延迟加载大字段属性
- Hibernate 的延迟加载【lazy】属性
- Hibernate框架-----属性延迟加载和关系延迟加载(七)
- hibernate实体及集合属性、关联实体的延迟加载
- Hibernate3中的属性延迟加载
- Hibernate3 实体属性的延迟加载——Hibernate深入浅出
- Hibernate中的延迟加载
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象
- Hibernate中用proxy(代理)实现类的延迟加载
- Hibernate之lazy延迟加载
- hibernate 延迟加载与动态代理