当前位置: 首页 > 面试题库 >

延迟加载的MVC

宫坚
2023-03-14
问题内容

如果这是完全相同的内容,请纠正我,我知道这个话题经常被讨论,但是找不到确切的答案。

问题:

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

细节:

我正在使用Hibernate,并希望在可能的情况下利用延迟加载。
我正在使用MVC风格的Webapp。
我讨厌获得延迟加载初始化异常。
我讨厌不得不在事务之间重新连接Hibernate对象。

选项:

  1. 渴望装载一切
    • 解决了懒惰的初始化问题,但使查询更大
  2. 使用一些“在视图中打开会话”的概念
    • 我喜欢它的简单性
    • 仍然需要重新附加对象,并且在AJAXy设置中,经常
    • 为每个请求打开一个会话
  3. 离开交易前我需要“触摸”物品
    • 充其量似乎很脆弱。
  4. 创建不同的,简化的“分离”对象,以便视图永远看不到真正的Hibernate对象
    • 这些可能比完整的Hibernate对象要简单,所以它不像是一个完整的模型
    • 我听说过此建议,但似乎更多的责任/代码/工作
  5. 当我想与Hibernate对象进行交互时,打开一个会话。
    • 可以很好地将其包装在Spring Service层中,但有时似乎过多。例如:我想要hibernateObject.getRelatedObjects()但需要说些类似的话springService.getRelatedObjects(hibernateObject)

我想念什么吗?
我是否考虑得太多了?
我是否思想不足?

PS:

对于Web框架,我正在使用ZK,但实际上 并不 需要ZK特定的答案。
我也使用Spring,并且对Spring的特定回答很酷,因为它无处不在。


问题答案:

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

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



 类似资料:
  • 描述 (Description) 延迟加载可应用于图像,背景图像和淡入效果,如下所述 - 对于图像 要在图像上使用延迟加载,请按照给定的步骤进行操作 - 使用data-src属性而不是src属性来指定图像源。 将类lazy添加到图像。 <div class = "page-content"> ... <img data-src = "image_path.jpg" class = "l

  • 问题内容: 我在JPA实体中的延迟加载属性有问题。我读过许多类似的问题,但它们与spring或hibernate有关,并且他们的后代不适用或没有帮助。 该应用程序是在Wildfly应用程序服务器上运行的JEE和JPA2.1。有两个实体,DAO会话bean和servlet将它们放在一起: 当我运行此代码时,它失败并显示: 我对WebLogic / JPA1使用了非常相似的模式,并且运行平稳。任何的想

  • 问题内容: 我想知道在node.js中使用是否等效于延迟加载? 例如,如果我有一个函数需要代码中其他任何地方都不需要的特定node.js包,那么我最好在该函数内部使用它,以便仅在调用该函数时才包含所需的包。 我还不确定是否会由于缺乏对node.js架构的了解而在性能方面有所改善?我想它每次与服务器的连接都会使用更少的内存。但是,当它必须读取程序包时,它会增加磁盘的I / O吗,还是将其添加到内存中

  • 这是从这里开始的后续行动。 我正在实现一个表,它将数据异步加载到表单元格中。问题是,表单元格有时无法正确更新。有时它会以某种方式“挂起”并永远显示“加载...”。实际值只有在我在表中滚动一点时才会更新。 要复制,请在表格中快速向下滚动应用程序。某些单元格不会显示“延迟加载”值,而是显示占位符字符串。 延迟加载属性如下所示: } 应用程序如下所示: 完整的可运行代码可以在这里找到。

  • 有很多关于“懒惰”的例子和文档。也许我没有明白,但为什么要用它呢?实例化bean成本

  • 看了几个网页后,我仍然不明白为什么我的@ElementCollection会急切地加载。我的理解是,默认情况下任何@ElementCollection都应该总是懒洋洋地加载。正如您所看到的,情况并非如此--您将在本文末尾看到控制台的输出。我试图使用@ElementCollection(fetch=fetchType.lazy)注释强制执行惰性加载,但这并没有改变任何事情。有没有人可以解释一下,也可