问题标签 [open-session-in-view]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 为什么 Hibernate Open Session in View 被认为是一种不好的做法?
您使用什么样的替代策略来避免 LazyLoadExceptions?
我确实了解开放式会话存在以下问题:
- 在不同 jvm 中运行的分层应用程序
- 事务仅在最后提交,并且很可能您想要之前的结果。
但是,如果您知道您的应用程序在单个虚拟机上运行,为什么不使用视图中的开放会话策略来减轻您的痛苦呢?
java - OSIV 模式 - 优点和缺点?关于 OSIV 和观点的一般性问题
我正处于网站项目的规划阶段,并决定是否使用 OSIV 而不使用 dao(eao)/dto(对现有项目使用 dao/dto)
我想知道,使用 OSIV,实体是否应该可以在视图中访问(例如,使用 struts2,我可以将实体推送到 valuestack 并在视图模板中使用 OGNL)
有没有人在 OSIV 上取得了成功,您是否允许视图直接访问实体?
谢谢
(顺便说一句:我很惊讶 OSIV 不是有效标签)
asp.net - Spring.NET + NHibernate - 具有 OpenSessionInView 的多个(不同)数据库
在我的 Web 应用程序中,我有 2 个完全不同的数据库 - 一个主要由 CMS 使用,我们希望从中获取同一网站上非 CMS 页面的页面信息,另一个包含完全不同的数据。
是否可以将 Spring.NET 的 Open Session In View 模块与这两个数据库的多个会话工厂一起使用,所以在这种情况下,我在 spring.config 类型中定义了 2 个对象Spring.Data.NHibernate.LocalSessionFactoryObject
?
google-app-engine - PersistenceManager 和在视图中打开会话
我的 Java 技能有点生疏,我想知道如何为从谷歌应用引擎环境中的 servlet 调用的 PersistenceManager 实现 Open Session In View 模式。
我有一些处理 PersistenceManagerFactory 的单例,但是如何在每个 servlet 调用中获得一个“新的”PersistenceManager?
我希望我的业务类能够访问一些将使用相同的 PersistenceManager 的存储库,并且始终(在一个 servlet 请求中)。
现在,我不知道如何在第一次调用单例时为每个 servlet 请求初始化一个新的 PersistenceManager ......
提前感谢您的帮助。
java - 休眠“在视图中打开会话”和异步任务
我正在为我的 jsf/icesfaces 应用程序使用 Open Session in View 模式。像往常一样,servlet 过滤器在“Web 服务器线程”的开始和结束时打开和关闭所有休眠会话。
我现在的问题是我正在使用异步任务,例如。从数据库中加载大量对象。因此,我正在“手动”创建一个执行任务的新线程。
现在我的问题是:为此类异步任务处理休眠会话的最佳方法是什么?我应该在线程本身中手动创建一个会话,还是有类似 servlet 过滤器的线程(线程启动时打开会话并在结束时关闭它的东西)?
我将不胜感激任何最佳实践等。谢谢你。
这是创建线程的代码:
java - JTA 事务中的 Hibernate Session 范围与 Open-Session-In-View
说使用JTA
带有 H 的 Transactions 与ibernate
使用 theOpen-Session-In-View
相对于会话范围进行对比是否正确?
从我已经能够在JTA
Transactions 中收集到的 Session 范围是一个事务(主要基于此链接),而在Open-Session-In-View
模式中,会话的范围是请求,您可以在其中有多个事务。
我问,首先要了解,其次要验证“谁”在使用时负责会话处理JTA
。
目前,当使用 时Open-Session-In-View
,我有一个HibernateUtil
处理会话的打开、检索和关闭的类(通过ThreadLocal<Session>
)。
我什么时候切换到使用JTA
将Hibernate
处理上述会话操作?(作为我调用 userTransaction.begin,userTransaction.rollback 的衍生产品)
顺便说一句,我问的是JTA
因为我需要协调交易Hibernate
JMS
,EHCache
所以这不是一般的最佳实践“让我们使用 JTA”的问题。
伊泰
hibernate - hibernate 与 OpenSessionInViewFilter 范式的集成测试
我使用 spring 和 hibernate 以及称为 ZKOSS 的 ria 技术并使用 OpenSessionInViewFilter 范例,
我有集成测试来测试功能,比如
1)实体被加载到 UI 中(延迟加载实体)
2)在 UI 上对其进行更新——(在测试中 UI 是通过一系列 setter 方法调用复制的)
3) 按下更新按钮并更新实体
而且我的测试通常会通过。
但是,当我真正开始使用该应用程序时,我最终会遇到延迟加载异常,因为
1) 实体被加载到 UI 中——在 session1 中加载(代理指向 session1)
2)在 UI 上对其进行更新——(在测试中 UI 是通过一系列 setter 方法调用复制的)
3)按下更新按钮并更新实体——(尝试访问延迟加载的实体)并获得延迟加载异常
我想在集成测试中捕获此类异常,有什么想法吗?...我的方法在这里正确吗?
谢谢
java - Session.close() 对 Spring openSessionInView 有影响吗?
我openSessionInView
在 web.xml 中有过滤器。
我已将allowCreate
HibernateDaoSupport 的属性设置为true
. 现在对于每个数据库操作,如果我获得 SessiongetSession
并在事务后关闭 Session,例如:
那么这个会话关闭会产生任何问题openSessionInView
吗?
另一个问题:这是做各种休眠操作的好方法吗?在上面的代码中,实体User
有一个获取配置文件。
谢谢并恭祝安康。
ajax - 如何使用休眠在 Wicket 下拉菜单的编辑屏幕中进行 ajax 查找?
我有以下结构:
A类{B值}
乙类 { }
它们之间的关系在 Hibernate 中双向映射,所以我使用 b.getListOfA() 来检索所有 A 的引用 B,反之亦然。
我有一个 Wicket 应用程序,它有一个编辑屏幕来编辑 A 类。这个屏幕是从一个 DataTable 初始化的,它具有 DataRowProvider 提供的模型(它是一个 LoadableDetachableModel)。当不使用 ajax 时,我可以获得一个非常好的下拉列表(标准检票口组件),我通过查询所有 B 来填充它。
现在我正在尝试使 DropDownChoice 成为 AutoCompleteTextBox。它工作正常,我可以选择一个 B,它在 A 的模型中正确填充。
但是当我尝试保存 A 的编辑实例时,我得到一个休眠异常:
org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话关联
我使用 Spring 的 OpenSessionInView 过滤器和 saveOrUpdate 方法来保存我的对象。
有什么提示吗?线索?调试提示?
java - 尽管有 OpenSessionInViewFilter,但 LazyInitializationException
尽管在堆栈跟踪本身中看到过滤器,但我似乎在 Spring/MVC 3.0/Hibernate 3.5 应用程序中随机获得以下 LazyInitializationException。关于我应该调查什么的任何想法?
来自web.xml
:
更新,添加定义SessionFactoryBean
: