我们正在使用跨多个页面的向导的Seam对话,其中一些屏幕会为用户选择加载大量数据(可以是几千条记录)。 Hibernate会话保留所有内容,这对内存使用和性能都是一个问题(因为刷新需要几秒钟的时间)。Seam会话中的休眠会话变得太大
是我们加载数据时唯一的选择吗?还是有更好的方法来管理它?
我们正在使用跨多个页面的向导的Seam对话,其中一些屏幕会为用户选择加载大量数据(可以是几千条记录)。 Hibernate会话保留所有内容,这对内存使用和性能都是一个问题(因为刷新需要几秒钟的时间)。Seam会话中的休眠会话变得太大
是我们加载数据时唯一的选择吗?还是有更好的方法来管理它?
如果您的屏幕在会话中保留了几千条记录(显然取决于这些记录的大小)长时间,当然,您将遇到问题。
如何解决问题取决于很多因素。
等等
您不必保存一切在交谈。
只保留用户插入的数据并为查询使用Event范围,并在每次访问向导页面时进行查询。
只是不保留查询的结果。
查询结果没有放入对话中,Hibernate会话保持结果,Seam保持Hibernate会话处于对话状态。 – David
使用ehcache将数据缓存在Hibernate级别,但它在加载时仍然会在Hibernate会话中结束。我们确实需要所有的数据。目前我们正在尝试使用仅存在于服务调用周围的第二个Hibernate会话,但不确定它是否是最佳选项。 – David