问题标签 [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.
spring - 会话中的 OpenSessionInViewFilter 和对象 - Spring MVC
我在使用 OpenSessionInViewFilter 时遇到问题,并且在给定请求中要执行的部分中描述的对象会发生:
我的控制器:
我的实体:
在会话中处理实体的最佳做法是什么?
spring - OpenSessionInView 没有启动,春天,休眠
大家好,我对 OpenSessionInViewFilter 有疑问,这个过滤器根本没有启动。这是我受此折磨的第三天,我不知道如何解决它,我已经阅读了很多关于此的问题和答案,但没有任何帮助。有我的配置文件,我有两个项目,第一个是第二个(网络应用程序)需要的服务。
在 web.xml 的第一个项目中,我有:
在这个项目中,我有 spring-config.xml:
在下一个项目中,我有另一个 spring-config.xml:
和spring-hibernate.xml:
现在我们可以转到 Web 应用程序和 web.xml 中:
还有另一个spring-config.xml:
抱歉这个大配置文件是最后一个 tomcat 启动日志:
请帮我
hibernate - 休眠更新问题 - OpenSessionInViewFilter
尝试使用 Spring MVC 3 和 OpenSessionInViewFilter 在我的应用程序中通过休眠更新对象大约需要 5 个小时,但没有任何运气。
我可能已经浏览过 StackOverflow 和其他论坛中所有可用的线程!
Hibernate 不会抛出任何错误,并说对象已更新,但它没有反映在我的数据库中。
任何帮助将不胜感激。
所以,这是我的JSON更新请求:
控制器:
服务等级:
道法:
**更新 2:正如 Deinum 先生所建议的,我已将事务管理器配置移至 o2-data.xml,现在仅扫描调度程序中的控制器,同时扫描 o2-data.xml 中的其他组件
数据配置
调度程序配置:
web.xml
spring - 休眠条件列表不会立即返回新记录
我在 Hibernate 4 中使用 Spring MVC。
我的问题是当我使用 Criteria 和 list() 方法从表中获取所有记录时。
有一个第 3 方进程每 1 秒将记录插入表中,并且每次用户按下“刷新”按钮时都会显示一个表示该表的屏幕。
当我在同一个会话中使用 Criteria.list() 时,我得到了延迟 45 秒的记录。最低限度。这意味着用户看到仅在 45 秒之前插入的记录。
这是使用标准:
这是休眠+事务设置:
@事务设置:
另外,我正在使用: OpenSessionInViewFilter
我已经尝试过:
- 禁用查询缓存
- 将隔离级别更改为更高的级别
- 清除()会话
有什么建议么?
谢谢,塔尔。
jakarta-ee - 在 JPA for Java EE 中的视图中打开 EntityManager
我正在寻找如何在 JPA 中实现 Open EntityManager In View 模式。但是,我能找到的只是 Hibernate(在视图中打开会话)或 Spring。
你们中的任何人都可以举一个例子(如果可能的话,用代码)如何为 JPA 和 Java EE 实现 Open EntityManager In View 模式?
java - 使用 Hibernate、Spring、Struts 2 在视图模式中打开会话
我正在开发一个项目,使用 Hibernate 进行持久化,使用 Struts 2 进行视图模式。
我的配置文件是:
web.xml
:
applicationContext.xml
:
我的问题是我无法在 Struts 2 的视图模式中保持 Hibernate 会话打开,这意味着当我尝试加载一些尚未使用 Hibernate 初始化的数据(例如集合)时,我得到了org.hibernate.LazyInitializationException
,所以在做了一些研究后我发现我必须添加此范围web.xml
以使会话在视图模式中保持打开状态。
范围:
但即使这样,我仍然有同样的问题,所以谁能告诉我我做错了什么。
java - 在 Spring MVC 中使用 ScrollableResults-backed Stream 作为返回类型时遇到问题
重要提示:这已被接受为Spring 问题,目标修复版本为 4.1.2。
我的目标是在从 Hibernate 生成 HTTP 响应时实现 O(1) 空间复杂度ScrollableResults
。我想保留标准机制,在该机制中MessageConverter
分派 a 以处理从 a 返回的对象@Controller
。我已经设置了以下内容:
MappingJackson2HttpMessageConverter
丰富了JsonSerializer
处理 Java 8 的 aStream
;ScrollableResultSpliterator
需要包装ScrollableResults
成的自定义Stream
;OpenSessionInViewInterceptor
需要保持 Hibernate 会话在MessageConverter
;- 设置
hibernate.connection.release_mode
为ON_CLOSE
; - 确保 JDBC 连接具有必要的 ResultSet 可保持性:
con.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT)
.
此外,我需要一个支持这种可保存性的数据库。PostgreSQL 就是这样一个数据库,我对此没有任何问题。
我遇到的最后一个绊脚石是HibernateTransactionManager
事务提交时使用的策略:除非底层会话是“休眠管理的”,否则disconnect()
它将关闭我的光标以及其他所有内容。这样的策略在一些特殊情况下很有用,特别是“会话范围的会话”,这与我的要求相去甚远。
我已经设法通过一个糟糕的 hack 来解决这个问题:我不得不用一种方法覆盖有问题的方法,该方法实际上是原始方法的复制粘贴,除了已删除的disconnect()
调用,但它必须诉诸反射来访问私有 API。
由于我认为我的方法是生成 ResultSet 支持的响应的“正确方法”,并且由于 Streams API 使这种方法非常方便,所以我想以受支持的方式解决这个问题。
有没有办法在没有我的黑客的情况下获得相同的行为?如果不是,那么通过 Spring 的 Jira 请求这是一件好事吗?
jsf - Manager EntityManager 认为 JSF 生命周期
好吧,我正在尝试手动创建模式“视图中的 OpenView 会话”,而不使用 Spring Framework。
我的想法是在恢复视图阶段打开 EntityManager SESSION 并在渲染响应阶段关闭,使用监听器:
但是,如果该过程来自 CRONTAB 并且 JSF 阶段没有被触发,我认为这是行不通的。
有人有一个很好的解决方案来实现没有 Spring 的 OpenSessionInView 吗?(我正在使用 CDI)
hibernate - 从 open-session-in-view 缓存延迟加载关系的集合
我有这种情况(底部有详细信息):
- X 是一个休眠实体
- Xy 是对另一个休眠实体 Y 的延迟加载引用
- Yz 是休眠实体 Z 的延迟加载、缓存集合
在事务后 Spring bean 中,在 open-session-in-view 中,我正在访问 Xyz 并获得“org.hibernate.HibernateException: Unable to resolve owner of loading collection [...] for second level caching”。调试到 Hibernate 4.3.8.Final 我发现 Xy 是使用临时会话延迟加载的,因此在寻找它的“原始”StatefulPersistenceContext
中不可用。CollectionLoadContext
那么我是否正在做一些尚未完成的事情?我是否需要事先显式触发此延迟加载或删除缓存?
提交事务后,但仍在视图中的开放会话中,我正在调用 Teachable.getElement().getChildConnections() 并获取 HibernateException。从调试中我可以看到 ElementSch 和 ElementConnectionSch 被延迟加载到单独的会话中,即主会话已加载 Teachable 并且两个单独的临时会话正在用于 ElementSch 和 ElementConnectionSch。
spring - OpenSessionInView 与事务性?(春天/休眠/ JPA)
我有一个带有延迟加载集合的 JPA 实体。我不需要每次都收集。
我在服务类上有一些方法,它们执行大量数据库交互,最后将 Foo 实体保存到数据库中。我需要为集合中的大约 100 个项目发生这种情况。
processAllFoos
@RESTController
每当收到请求时都会从 a 调用。
但是,我不想processAllFoos
被包装在单个数据库事务中,因为这会锁定整个 Foo 表,直到为所有 Foo 执行业务逻辑。
如果我使用该processFoo
方法@Transactional
,我会得到LazyInitializationException
抱怨 Hibernate 会话不存在的方法。为了完成这项工作,我需要在调用堆栈中创建所有方法,@Transactional
以便嵌套方法可以加入调用方法的事务。但这会锁定整个 Foo 表,如上所述。
添加一个OpenSessionInViewFilter
for thedispatcher servlet
解决了我的问题,但我读到使用这种方法存在性能和实体分离/重新连接(我在应用程序的其他部分执行)的问题。
有没有一种方法可以在不使用该方法的情况下做我想做的事OpenSessionInView
?通过使用这种方法,我还添加了哪些其他漏洞?
Spring/Hibernate 4.x
根据下面的答案,我能够做到以下几点: