栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java为什么将View中的Hibernate Open Session视为不良做法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java为什么将View中的Hibernate Open Session视为不良做法?

因为从性能和理解的角度来看,在视图层中发送可能未初始化的代理(尤其是集合)并从那里触发hibernate加载可能会造成麻烦。

了解:

使用OSIV会“污染”视图层,使其与数据访问层有关。

视图层没有准备好处理

HibernateException
延迟加载时可能发生的事件,但是大概是数据访问层。

性能:

OSIV倾向于在地毯下拖拉适当的实体负载-你往往不会注意到你的集合或实体是延迟初始化的(也许是N + 1)。更多便利,更少控制。

更新:有关此主题的更多讨论,请参见

OpenSessionInView
反模式。作者列出了三个要点:

  1. 每个惰性初始化都会给你一个查询,这意味着每个实体将需要N + 1个查询,其中N是惰性关联的数量。如果你的屏幕上显示表格数据,则阅读Hibernate日志是一个很大的提示,表明你不应该这样做
  2. 这完全破坏了分层体系结构,因为你在演示层中不满意DB。这是一个概念上的弊端,所以我可以接受,但是有一个必然结果
  3. 最后但并非最不重要的一点是,如果在获取会话时发生异常,则该异常将在页面的编写过程中发生:你无法向用户显示干净的错误页面,唯一可以做的就是在正文中写入错误消息


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407693.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号