`
loseone
  • 浏览: 32949 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate的延迟属性抓取

阅读更多

再次犯了没有仔细看Hibernate Reference的错误,在Hibernate 3以上版本都支持对于property设置lazy="true",但一直我都以为只要设置了就可以实现的,今天和jindw讨论的时候才知道原来不是这样,^_^,赶快做了下试验,确实,即使对于property设置了lazy="true",但在调用获取了po中的任意非主键属性时其他所有的property也就被加载了,也就是说lazy没有生效,到底怎么回事呢,翻阅Hibernate Reference才明白了这个问题:
property
(7)lazy (可选,默认为false) 指定实例变量第一次被访问时,这个属性是否延迟抓取(需要运行时字节码增强)
其实看这部分会在最后那句需要运行时字节码增强上迷糊,在hibernate reference中还有一句这样的话:“Hibernate也不需要使用任何编译期处理,比如字节码增强操作,它独立的使用Java反射机制和运行时类增强(通过CGLIB)。”
 这就非常迷糊了,因为这里已经说了比如字节码增强操作....
不过还好在Hibernate Reference中有个专门的章节来解释property lazy的问题,这个章节就是使用延迟属性抓取,在这里才算是完全看明白了:
“属性的延迟载入要求在其代码构建时加入二进制指令,如果你的持久类代码中未含有这些指令,Hibernate将会忽略这些属性的延迟设置,仍然将其直接载入。”
看完这段就明白了,也就是说要在编译期对代码进行字节码增强,关于编译期进行字节码增强的实现具体见Hibernate Reference,里面列出了一个采用ant task完成编译时字节码增强的实现。

想明白后怀疑是不是Hibernate Reference中文版中翻译错了?写的应该是需要编译时字节码增强吧,果然,查阅了一下Hibernate Reference英文版,上面写的就是requires build-time bytecode instrumentation...
不过Hibernate Reference中文版中component部分的lazy翻译的又是对的,那里的翻译就是需要编译时字节码增强,^_^



BlueDavy 2006-04-05 22:45 发表评论
分享到:
评论

相关推荐

    Hibernate 延迟加载剖析与代理模式应用

    Hibernate 的延迟加载本质上就是代理模式的应用,当程序通过 Hibernate 装载一个实体时,默认情况下,Hibernate 并不会立即抓取它的集合属性、关联实体所以对应的记录,而是通过生成一个代理来表示这些集合属性、...

    Hibernate+中文文档

    19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/...

    hibernate3.2中文文档(chm格式)

    19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/...

    HibernateAPI中文版.chm

    19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/...

    Hibernate 中文 html 帮助文档

    19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/...

    Hibernate中文详细学习文档

    19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/...

    Hibernate实战(第2版 中文高清版)

     13.1.2 延迟的默认抓取计划   13.1.3 理解代理   13.1.4 禁用代理生成   13.1.5 关联和集合的即时加载   13.1.6 通过拦截延迟加载   13.2 选择抓取策略   13.2.1 批量预抓取数据   13.2.2 通过子...

    最全Hibernate 参考文档

    使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/写缓存...

    hibernate 体系结构与配置 参考文档(html)

    1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第...

    Hibernate教程

    使用延迟属性抓取(Using lazy property fetching) 20.2. 二级缓存(The Second Level Cache) 20.2.1. 缓存映射(Cache mappings) 20.2.2. 策略:只读缓存(Strategy: read only) 20.2.3. 策略:读/写缓存...

    hibernate 教程

    外连接抓取(Outer Join Fetching ) 3.5.3. 二进制流 3.5.4. 自定义CacheProvider 3.5.5. 事务策略配置 3.5.6. 绑定SessionFactory到JNDI 3.5.7. 查询语言替换 3.6. Logging 3.7. 实现...

    Hibernate参考文档

    19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/...

    hibernate的应用和使用

    hibernate 的描述一般的ORM包括四个部分: 对持久类对象进行CRUD操作的API...让ORM实现同事务对象一起进行脏数据检查(dirty checking)、延迟关联抓取 (lazy association fetching)和其他优化操作的技术(实现技术)

    hibernate3.04中文文档.chm

    使用延迟属性抓取(Using lazy property fetching) 20.2. 二级缓存(The Second Level Cache) 20.2.1. 缓存映射(Cache mappings) 20.2.2. 策略:只读缓存(Strategy: read only) 20.2.3. 策略:读/写...

    hibernate总结

    i. 如果不加fetch关键字,则hibernate不会抓取关系属性,但会遍历关系属性所对应的表 ii. 不加fetch关键字时,select 要指定返回的对象,否则它要返回数组 iii. 条件:持久化类之间有关系属性映射 Hibernate级联...

    Hibernate3+中文参考文档

    使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读缓存(Strategy: read only) 19.2.3. 策略:读/写缓存...

    hibernate 框架详解

    目录 前言 1.... 2.... 1. 在Tomcat中快速上手 ... 1.1. 开始Hibernate之旅 ... 操作延迟加载的关联 20.1.2. 调整抓取策略(Tuning fetch strategies) 20.1.3. 单端关联代理(Single-ended association proxies) ...

    hibernate

    外连接抓取(Outer Join Fetching ) 3.5.3. 二进制流 3.5.4. 自定义CacheProvider 3.5.5. 事务策略配置 3.5.6. 绑定SessionFactory到JNDI 3.5.7. 查询语言替换 3.6. Logging 3.7. 实现...

    NHibernate中文帮助手册API

     3.5.2 外连接抓取(Outer Join Fetching)  3.5.3. 查询缓存  3.5.4. 查询语言中的替换  3.6. 日志  3.7. 实现NamingStrategy  3.8. XML配置文件  4. 持久化类(Persistent Classes)  4.1. 一个简单的...

Global site tag (gtag.js) - Google Analytics