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