【发布时间】:2009-05-19 18:53:34
【问题描述】:
我有一个涉及 spring 和 hibernate 的相当大的项目。现在,我正在将某些对象从休眠状态恢复到内存中,并且遇到了一些障碍。我有以下设置。
A 类包含多个原语和一个 B 类。B 包含原语和一个 C 类,之前是延迟加载。
现在我有了这个
服务调用 1:
1.) 创建 A 类的对象
2.) 获取 B 类的对象
3.) 在 A 中设置 B
4.) 将 A 添加到内存中
服务调用 2:
1.) 从内存中获取 A
2.) 从 A 获得 B
3.) 从 B 获取 C
4.) 在 C 上操作
因为 C 是延迟加载的,它依赖于现有的休眠会话通过休眠从 B 延迟加载自身,至少我相信是这样的。然而,现在我需要延迟加载 而不 修改 DAO 以返回 ID,并且不存在 当前 休眠会话可以通过 OpenSessionInView 劫持。考虑到限制,解决这个问题的最佳方法是什么?我发现的唯一解决方案依赖于不合适的代码更改或现有会话,因此我认为我也许可以手动打开休眠会话。我该怎么做呢?或者,这个问题有更好的解决方案吗?
【问题讨论】:
-
您使用的是 JPA 还是通用 Hibernate?你做了什么来尝试解决这个问题?
标签: java hibernate spring lazy-loading