2013-06-13 8 views
0

ZK로 작업 해 왔지만 현재 클라우드에 호스팅 된 응용 프로그램을 가지고 있지만 성능에 대한 기대치를 충족하지 못합니다. 내 응용 프로그램은 ZK를 사용하여 MySQL 데이터베이스와의 상호 작용을위한 Hibernate와 데이터베이스 상호 작용과 관련된 Bean 관리를위한 Spring을 사용합니다.ZK 바인더 업데이트 목록이 느림

시나리오 예 :

목록이 최대 절전 모드 사용하여 데이터베이스에서 검색 초기화에서
  1. (우리가 최대 200 개체에 대한 이야기, 최대 6 개 표준 속성). 이 작업에는 다소 시간이 걸리지 만 허용됩니다.
  2. 목록에서 개체를 추가하거나 삭제합니다. @NotifyChange ("list")를 사용하여 목록이 변경되었음을보기에 알립니다.
  3. 목록이 업데이트하지만 내 의견 (1 ~ 2 초)으로

3 단계는 이해가 안 1 단계만큼이나 오래 걸립니다에 오래 걸립니다, 봄은 데이터베이스 상호 작용을위한 객체가 관리 아직 초기화되지 않았습니다. 또 다른주의 할 점은 목록에서 개체를 추가하거나 삭제할 때 데이터베이스에서 전체 목록을 다시로드하지 않는다는 것입니다. 내 ViewModels에 @Autowired로 설정된 Spring 관리 Bean에있는 객체의 로컬 복사본이 유지됩니다. (예, 잠재적으로 데이터베이스와 동기화되지 않지만, 제 경우에는별로 문제가되지 않습니다.)하지만 병목 현상으로 인한 최대 절전/스프링/데이터베이스가 제거됩니다.

또한 로컬 호스트에서이 파일을 실행했는데 예상보다 빠르지 만 여전히 원치는 않습니다.

이제는 목록과 관련된 java에서 개체를 만들고 삭제하는 작업을 수행해야 할 수도 있다고 생각했습니다. ZK 바인더가 작동하는 방식과 오브젝트가 업데이트되는 방법에 대한 연구를 수행했지만 바인더가 목록의 업데이트를 처리하는 방법을 찾을 수 없습니다.

viewModel에서 @NotifyChange ("listA")로 주석이 달린 경우 ZK 바인더가 목록의 목록을 업데이트하는 방법을 아는 사람이 있습니까? 실제로 이전 목록을 버리고 완전히 새로운 목록을 설정합니까 아니면 어떻게 차이점을 병합합니까?

병목 현상이 될 수있는 다른 의견도 환영합니다! 사전에

감사합니다,

로버트

답변

0

귀하의 목록을 나타내려면 Listbox을 사용한다고 가정합니다.
먼저 zk가 MVC에 사용하는 MVVM과 동일한 데이터
구조를 사용한다는 것을 알아야합니다. 즉, ListModelperformance tips
을 사용하는
은 MVVM에도 유용합니다.
물론 zk는 standart 모델
을 구현할 수 없으며 모든 사람의 요구에 부합합니다.
그럼 당신이해야 할 일은 자신의
모델을 구현하는 것입니다. 일반적으로 최고는 ListModelList에서 연장됩니다.
이렇게하면 목록을 스마트하게 업데이트 할 수 있습니다.

+0

좋은 생각 인 것 같습니다! 내 자신의 목록을 작성하고 개체 작성/삭제를 줄이기 위해 목록의 설정자를 병합하려고합니다. 감사! – Robert

0

은 내가 ZK과 많이 일하지만 난 항상 렌더링 또는 다시 모든로드 그리드 또는 목록 상자의 데이터를 다시로드 할 때 나는 @NotifyChange를 사용 적이 없다 . 저에게 그것은 1 초도 채 걸리지 않고 잘 작동합니다. 여기에 제 바인딩의 예가 있습니다 :
> 그리고 예, 데이터가 변경 될 때 내 메소드를 다시 불러 와서 다시로드하고 잘 작동합니다.

@Listen("onCreate = #listboxSolicitudes") 
    public void loadList() {  
List<ConsultasSolicitudes> listaConsulta = null; 
      listaConsulta = ConsultasSeguimientoDeSolicitudesDAO.obtenerSolicitudesAsignadas((Long) cbResponsable.getSelectedItem().getValue()); 
      ListModelList<ConsultasSolicitudes> solModel = new ListModelList<ConsultasSolicitudes>(listaConsulta); 
      listboxSolicitudesAsignadas.setModel(solModel); 
} 

어쩌면이 방법이 도움이 될 수 있지만, 오랫동안 복용하면 문제가 발생합니다.

+0

글쎄, 네가 설명하는 것은 MVC이고 MVVM을 사용하고있다. 내 응용 프로그램에 많은 데이터 바인딩이 필요하고 뷰 모델을 사용하는 것이 더 적합하고 더 많은 옵션을 제공하기 때문에 MVVM을 사용합니다. 그래도 답장을 보내 주셔서 감사합니다. – Robert