2012-05-16 3 views

답변

3

항상 달성하려는 대상에 따라 다릅니다. 따라서 비용이 무엇인지 이해하는 것이 중요합니다.

요청간에 Wicket은 일반적으로 페이지 개체와 참조하는 모든 항목을 serialize합니다. 여기에는 페이지의 모든 구성 요소와 모든 모델이 포함됩니다. 이것이 발생하지 않는 유일한 시간은 페이지가 stateless 인 경우입니다.

대부분의 모델 구현에는 기본 모델 객체에 대한 비 일시적인 참조가 포함되어 있으므로 모델에 대형 객체에 대한 참조가 포함되어 있고 페이지가 비 상태가 아닌 경우 직렬화 시간에 오버 헤드가 발생하며 더 중요한 것은 세션의 메모리 풋 프린트.

LoadableDetachableModel은 다르게 작동하며 기본 모델 개체에 대한 일시적인 참조 만 포함하므로 직렬화 될 때 모델 개체는 그렇지 않습니다. 단점은 각 요청에 대해 모델 객체를 재구성해야한다는 것입니다.

귀하의 질문은 실제적으로 다음과 같습니다 : 전통적인 모델을 사용하는 비용이 LoadableDetachableModel의 비용보다 중요한가요? 이미 언급했듯이 모델 객체가 데이터베이스에서 가져온 것이라면 거의 항상 LDM을 사용할 가치가 있습니다.

기억해야 할 또 다른 점은 LDM이 선호하는 또 다른 장점은 모델을 연결할 수 있다는 것입니다. 따라서 LDM에 의해 뒷받침되는 CompoundPropertyModel을 계속 사용할 수 있습니다.

+1

+1 - 좋은 설명 –

3

데이터베이스에서 가져온 데이터를 사용하는 경우 거의 대부분 LoadableDetachableModel을 사용하여 다시로드하는 데 필요한 ID 만 직렬화하는 것이 가장 좋습니다.

PropertyModelCompoundPropertyModel은 모델을 랩핑하여 양식에서보다 쉽게 ​​사용할 수 있지만 세션으로의 직렬화 비용을 줄이는 주요 방법은 LoadableDetachableModel을 사용하는 것입니다.

관련 문제