如果这是完全重复的,请纠正我,我知道这个话题经常被讨论,但找不到明确的答案。
问题:
在 MVC webapp 中处理 Hibernate 对象的最佳实用解决方案是什么?
细节:
我正在使用 Hibernate,并希望尽可能利用延迟加载。
我正在使用 MVC 风格的 webapp。
我讨厌延迟加载初始化异常。
我讨厌在事务之间重新附加 Hibernate 对象。
选项:
- 渴望加载一切
- 解决了延迟初始化问题,但使我的查询更大
- 使用一些“在视图中打开会话”的概念
- 我喜欢它的简单
- 对象仍然需要重新附加,并且在 AJAXy 设置中,非常频繁
- 为每个请求打开一个会话
- 在离开交易之前“触摸”我需要的物品
- 充其量似乎很脆弱..而且乏味
- 创建不同的、简化的、“分离的”对象,这样视图就不会看到真正的 Hibernate 对象
- 这些可能比完整的 Hibernate 对象更简单,因此它不像模型的完整急切加载
- 我在一些地方听说过这个建议,但似乎更多的责任/代码/工作
- 当我想与 Hibernate 对象交互时打开一个会话。
- 这可以很好地包裹在 Spring Service 层中,但有时似乎过度。例如:我想要
hibernateObject.getRelatedObjects()
但需要说类似的话springService.getRelatedObjects(hibernateObject)
- 这可以很好地包裹在 Spring Service 层中,但有时似乎过度。例如:我想要
我错过了什么吗?
我是不是想多了?
我有没有考虑过一些事情?
PS:
对于一个 Web 框架,我正在使用 ZK,但并不真正想要 ZK 特定的答案。
我也在使用 Spring,并且对 Spring 的特定答案很满意,因为它无处不在。