我有一种情况,我有记录列表说10,000,我使用数据表,我正在使用分页,(每个显示10条记录)。我想将该列表放在会话中:
facesContext........put("mylist", mylist);
在mylist的getter中,我有
public List<MyClass> getMyList() {
if(mylist== null){
mylist= (List<MyClass>) FacesContext......getSessionMap().get("mylist");
}
return mylist;
}
现在问题是我点击分页按钮转到第二页,只显示第一个记录, 我知道我错过了一些事情,我几乎没有问题:
将列表放入会话的方式是否正确。 这是我应该在我的情况下调用列表的方式。
事先提前......
答案 0 :(得分:1)
完全不同的东西:我强烈建议不将那些10.000条记录放在会话范围内。这显然效率低下。如果100个用户正在访问您的数据表,那么这些记录将在每个用户的内存中重复。这毫无意义。只需将它们保留在数据库中并相应地编写SQL查询,它会准确返回要显示每个请求的行。这就是数据库的设计目标。如果数据模型设计得很好(WHERE
和必要的ORDER BY
子句中涉及的列的索引),那么它肯定比为每个访问者在Java内存中占用整个表更快。
您可以在this article中找到更多见解和代码示例。