wicket 세션 크기 조정에 대해 읽었으며 LoadableDetachableModel을 사용하여 모델을 영원히 살리지 않는 것이 좋습니다. Property 모델 (Property 및 PropertyCompoundModel)이 너무 비쌉니까?개찰구에서 LDM을 사용해야하는시기는 언제입니까?
언제 LDM 또는 속성 모델을 사용할 수 있습니까?
wicket 세션 크기 조정에 대해 읽었으며 LoadableDetachableModel을 사용하여 모델을 영원히 살리지 않는 것이 좋습니다. Property 모델 (Property 및 PropertyCompoundModel)이 너무 비쌉니까?개찰구에서 LDM을 사용해야하는시기는 언제입니까?
언제 LDM 또는 속성 모델을 사용할 수 있습니까?
항상 달성하려는 대상에 따라 다릅니다. 따라서 비용이 무엇인지 이해하는 것이 중요합니다.
요청간에 Wicket은 일반적으로 페이지 개체와 참조하는 모든 항목을 serialize합니다. 여기에는 페이지의 모든 구성 요소와 모든 모델이 포함됩니다. 이것이 발생하지 않는 유일한 시간은 페이지가 stateless 인 경우입니다.
대부분의 모델 구현에는 기본 모델 객체에 대한 비 일시적인 참조가 포함되어 있으므로 모델에 대형 객체에 대한 참조가 포함되어 있고 페이지가 비 상태가 아닌 경우 직렬화 시간에 오버 헤드가 발생하며 더 중요한 것은 세션의 메모리 풋 프린트.
LoadableDetachableModel
은 다르게 작동하며 기본 모델 개체에 대한 일시적인 참조 만 포함하므로 직렬화 될 때 모델 개체는 그렇지 않습니다. 단점은 각 요청에 대해 모델 객체를 재구성해야한다는 것입니다.
귀하의 질문은 실제적으로 다음과 같습니다 : 전통적인 모델을 사용하는 비용이 LoadableDetachableModel
의 비용보다 중요한가요? 이미 언급했듯이 모델 객체가 데이터베이스에서 가져온 것이라면 거의 항상 LDM을 사용할 가치가 있습니다.
기억해야 할 또 다른 점은 LDM이 선호하는 또 다른 장점은 모델을 연결할 수 있다는 것입니다. 따라서 LDM에 의해 뒷받침되는 CompoundPropertyModel
을 계속 사용할 수 있습니다.
데이터베이스에서 가져온 데이터를 사용하는 경우 거의 대부분 LoadableDetachableModel
을 사용하여 다시로드하는 데 필요한 ID 만 직렬화하는 것이 가장 좋습니다.
PropertyModel
및 CompoundPropertyModel
은 모델을 랩핑하여 양식에서보다 쉽게 사용할 수 있지만 세션으로의 직렬화 비용을 줄이는 주요 방법은 LoadableDetachableModel
을 사용하는 것입니다.
+1 - 좋은 설명 –