JSF 2.1을 사용하고 있으며 방대한 양의 데이터가 포함 된 목록을로드하는 데 문제가 있습니다. 데이터는 기본적으로 다음과 같습니다 JPA를 통해 데이터베이스에서 가져온 것입니다 : (단지 관련 부분, 생략 getter 및 setter)JPA에서 목록을로드 할 때 Stackoverflow 오류가 발생했습니다.
public class HostController {
private List<Host> allHosts;
@Inject
private HostService hostService;
public void beforeRenderLoadList(final ComponentSystemEvent event) {
allHosts = hostService.findAll();
}
}
이 코드는 XHTML 페이지에 metaevent preRenderView
에 사용됩니다.
더 적은 양의 데이터를 처리하지만 원본 테이블에 약 6500 개의 항목이 포함되어 있으므로 스택 오버 플로우 오류가 발생합니다.
이 목록을 지연로드하거나 오류를 해결하는 방법이 있습니까?
Google은 페이지 매김을 사용하여 문제를 해결했습니다. 당신은 그것을 고려 했습니까? 세계 어느 사람이 필터링 키워드 (검색 키워드) 및/또는 페이지 매김없이 한 번에 6500 개의 항목을 볼 필요가 있습니까? (따라서 하위 집합 만 DB에서 검색 할 수 있습니다.) 추가 이점은 6500 대신 10 개의 레코드 만 검색하고 표시하는 것이 훨씬 빠릅니다.이 문제는 JSF와는 아무런 관련이 없습니다. JPA를 사용하기 위해 다른 프론트 엔드를 사용할 때와 똑같은 문제가있었습니다. 암호. 더 나은 답변을 얻으려면 스택 오버플로 오류와 실제 JPA 코드를 게시하십시오. – BalusC
@BalusC 쿼리는 기본적으로 "SELECT h FROM hosts h"입니다. 내 데이터 테이블은 페이지 매김 및 지연로드와 함께 작동합니다. 여기서 말하는 내용은 selectOneMenu에 표시되어야합니다. 거기에 게으른로드 할 수있는 방법이 있습니까? –
스택을 포함하십시오. – James