gpt4 book ai didi

java - 带有延迟加载的 MVC

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:18:12 24 4
gpt4 key购买 nike

如果这是完全重复的,请纠正我,我知道这个话题经常被讨论,但找不到明确的答案。

问题:

在 MVC webapp 中处理 Hibernate 对象的最佳实用解决方案是什么?

详情:

我正在使用 Hibernate 并希望尽可能利用延迟加载。
我在 MVC 风格的网络应用程序中工作。
我讨厌延迟加载初始化异常。
我讨厌在事务之间重新附加 Hibernate 对象。

选项:

  1. 急切加载一切
    • 解决了惰性初始化问题,但使我的查询变得更大
  2. 使用一些“在 View 中打开 session ”概念
    • 我喜欢它的简洁
    • 对象仍然需要重新附加,并且在 AJAXy 设置中,非常频繁
    • 为每个请求打开一个 session
  3. 在离开交易之前“触摸”我需要的元素
    • 充其量看起来很脆弱..而且乏味
  4. 创建不同的、简化的、“分离的”对象,这样 View 永远不会看到真正的 Hibernate 对象
    • 这些可能比完整的 Hibernate 对象更简单,因此它不像是模型的完整预加载
    • 我听说过有人推荐这个,但似乎更多的责任/代码/工作
  5. 每当我想与 Hibernate 对象交互时打开一个 session 。
    • 这可以很好地包装在 Spring 服务层中,但有时看起来太过分了。例如:我想要 hibernateObject.getRelatedObjects() 但需要说类似 springService.getRelatedObjects(hibernateObject)

我是不是漏掉了什么?
我是不是想多了?
我有没有考虑周全?

附言:

对于网络框架,我正在使用 ZK,但真的想要 ZK 特定的答案。
我也在使用 Spring,并且很喜欢 Spring 特定的答案,因为它无处不在。

最佳答案

使用 4-ish - 不要在 View 中使用开放 session ,不要让你的 hibernate 实体一直冒泡到 View ,而是让转换器在 hibernate 实体和你的域对象或“ View bean”之间转换,具体取决于关于你想如何工作。

我认为 Hibernate 实体只是一种持久性策略,而不是域模型或 UI 表示。

关于java - 带有延迟加载的 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14360216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com