为什么 Spring 和 Hibernate 中的 @Lob 字段延迟加载失败?

Susan Sarandon
发布: 2024-11-02 18:28:02
原创
414 人浏览过

Why Does Lazy Loading Fail for @Lob Fields in Spring and Hibernate?

Spring 和 Hibernate 中 @Lob 的延迟加载问题

在使用 Spring 和 Hibernate 的 Web 应用程序中,包含文件相关数据的数据库记录是呈现在网页上。虽然当数据量适中时该过程运行顺利,但过多的数据量会触发“OutOfMemoryError”。

作为初始故障排除步骤,将“blobField”属性设置为“null”解决了内存问题,这意味着惰性尽管有 @Basic(fetch=FetchType.LAZY) 注解,加载还是无效。

解释和解决方法

根据 Hibernate 文档,@Lob 字段本质上是惰性的,并且不需要显式的惰性注释。但是,数据库和驱动程序之间的行为不一致。

一种解决方案涉及 Javassist 或 Cglib 等字节码检测技术。

推荐解决方案

至为了可靠地解决这个问题,建议重构数据映射。不要利用属性,而是创建“假”一对一映射。从主类中删除 LOB 字段,建立引用相同表和主键但仅包含必要的 LOB 字段的新类。将这些映射标记为一对一、获取选择和惰性 true。这种方法可确保在父对象保留在会话中时延迟加载。

以上是为什么 Spring 和 Hibernate 中的 @Lob 字段延迟加载失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板