Seam 会话中的 Hibernate 会话变得太大

发布于 2024-12-06 01:59:24 字数 153 浏览 0 评论 0原文

我们正在使用 Seam 对话来创建跨多个页面的向导,其中一些屏幕会加载大量数据供用户选择(可以是数千条记录)。 Hibernate 会话保留所有内容,这对于内存使用和性能来说都是一个问题(因为刷新需要几秒钟)。

我们唯一的选择是在加载数据时逐出数据,还是有更好的方法来管理它?

We are using a Seam conversation for a wizard that spans multiple pages, some of these screens load a lot of data for user selection (can be several thousand records). The Hibernate session is holding onto everything, which is an issue for both memory usage and performance (as flush takes several seconds).

Is our only option evicting data as we load it or is there a better way to manage this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

君勿笑 2024-12-13 01:59:24

如果您的屏幕在会话中保留数千条记录(显然,取决于这些记录有多大),并且长时间保存,那么您肯定会遇到问题。

如何解决问题取决于很多因素。

  • 是否可以将应用程序范围内的数据存储在一个位置?
  • 您可以在 Hibernate 级别(如 ehcache)缓存它,还是在......
  • 位于应用程序和数据库之间的外部缓存中缓存它?
  • 您是否需要保留这些记录中的所有数据,还是一小部分数据(例如 ID 和标签)就足够了?

ETC。

If you have screens that keep several thousand records in the session (depending, obviously, on how big those records are) for an extended period of time, sure, you're going to have problems.

How to solve the problem depends on a lot of factors.

  • Is it app-wide data that can be stored in a single place?
  • Can you cache it either at the Hibernate level (like with ehcache), or in...
  • ...an external cache that sits between the app and the DB?
  • Do you need to keep all the data in those records, or would a small subset (like an id and label) suffice?

Etc.

仙气飘飘 2024-12-13 01:59:24

您不必保存对话中的所有内容

只需保留用户插入的数据并使用事件范围进行查询,并在每次访问向导页面时进行查询。

只是不保留查询结果。

You don't have to save everything in a conversation.

Just keep the data inserted by the user and use a Event scope for the queries, and make a query each time you access the page of the wizard.

Just don't keep the results of the query.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文