- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 Vehicle DTO 的 Vehicle 实体。
我将 OpenSessionInView
与 Stripes 一起使用。
在我的 Stripes action bean 中,我需要生成一个包含大约 50000 辆汽车数据的 csv。
因此,正如 Stripes 开发人员告诉我的那样,我使用以下方法将文件写入输出流:
StreamingResolution() {...}.stream(HttpServletResponse)
我有一项服务可以获取一些分页信息,加载一部分车辆并将它们转换为 DTO。
这些 dto 返回到 View 并写入 csv。
分页系统(每页 500 个项目)是为了避免有 50000 个 DTO 的列表和一些内存问题。
但它还不能完美地工作。使用 Jmap,我看到在 csv 进程结束时,堆空间中加载了超过 40000 辆车辆,但没有被垃圾收集。
使用 Yourkit 探查器,在我看来这些实体仍在 hibernate 的 L1 缓存中(在 StatefulPersistenceContext
中引用),并且由于我有 OpenSessionInView
,我想问题是 session 有点长,需要清理缓存...
我只是想知道如何以一种优雅的方式做到这一点,因为我的 dao 方法加载车辆被许多服务使用,这些服务不一定需要清理/刷新 session 。
有人知道我能做什么吗?我想我可以在 DAO/Service 中创建一个方法来清除 session ,但它不是很优雅...
这是一个相当大的项目,我对它做了一个非常简单的描述。请不要告诉我不要使用 opensessioninview 或类似的东西,这不是我的决定......;)
最佳答案
这可能并不优雅,但在这种情况下,从 session 中驱逐实体是唯一可行的解决方案。
例如,将实体的数据写入输出流后,调用 session.evict(entity)
将其从 session 缓存中删除。或者,在每个“页面”的末尾调用它。
分页机制和逐出的结合应该确保缓存中的实体不会同时超过 500 个。
关于java - Hibernate Cache1 OutOfMemory 与 OpenSessionInView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4758574/
我有一个使用 Spring 3.0.1、Struts 2.0、Hibernate 3.3.2 和 Apache Tiles 的 Web 应用程序,我想引入 OpenSessionInView 模式。我
最近在做架构Hibernate/JPA/Spring/Zk,因为要学很多框架,所以这几天问题越来越多。 我有一个问题让我困惑了好几天。 我听说“模式”OpenSessionInView 使 Hiber
我有一个带有 Vehicle DTO 的 Vehicle 实体。 我将 OpenSessionInView 与 Stripes 一起使用。 在我的 Stripes action bean 中,我需要生
我正在开发一个 Spring Hibernate Web 应用程序 早些时候,我只使用 dispatcher-servlet.xml 加载 Spring 配置,而没有使用 ContextLoaderL
我在 web.xml 中有 openSessionInView 过滤器。 openSessionInView org.springframework.orm.hibernate3.s
我将 OpenSessionInView 与 DWR 结合使用来为我的 ajax 请求获取一个 hibernate session 。当我开始部署 war 时这工作正常,但是当我尝试使用 run-ap
有谁知道 Database.com Java SDK 是否具有与 Hibernate 的 OpenSessionInView 等效的功能(或者有人创建了自己的)? 在引用我的惰性关系时,我的 JSP
我是一名优秀的程序员,十分优秀!