改札のセッションサイズの調整について読んでいますが、モデルを永久に存続させないためにLoadableDetachableModelを使用することをお勧めします。プロパティモデル(PropertyおよびPropertyCompoundModel)は非常に高価ですか?
LDMまたはプロパティモデルをいつ使用するのですか?
LoadableDetachableModel
データベースから取得したデータを使用している場合は、リロードに必要な ID のみがシリアル化されるように、ほとんどの場合 a を使用するのが最善です。
PropertyModel
モデルをCompoundPropertyModel
ラップしてフォームで使いやすくすることができますが、セッションへのシリアル化のコストを削減する主な方法は、LoadableDetachableModel
.
それは常にあなたが達成しようとしていることに依存します。そのため、費用がいくらなのかを理解することが重要です。
リクエスト間で、Wicket は通常、ページ オブジェクトとそれが参照するすべてのものをシリアル化します。これには、ページ上のすべてのコンポーネントと、その結果としてのすべてのモデルが含まれます。これが起こらないのは、ページがステートレスの場合だけです。
ほとんどのモデル実装には、基になるモデル オブジェクトへの非一時的な参照が含まれているため、モデルに大きなオブジェクトへの参照が含まれていて、ページがステートレスでない場合、シリアル化時間のオーバーヘッドが発生し、さらに重要なことには、.セッション。
LoadableDetachableModel
動作が異なり、基になるモデル オブジェクトへの一時的な参照のみが含まれているため、シリアル化されている場合、モデル オブジェクトはそうではありません。これの欠点は、リクエストごとにモデル オブジェクトを再構築する必要があることです。
だからあなたの質問は本当にこれです: 従来のモデルを使用するコストは のコストを上回りLoadableDetachableModel
ますか? すでに述べたように、モデル オブジェクトがデータベースから取得されたものである場合、ほとんどの場合、LDM を使用する価値があります。
覚えておかなければならないもう 1 つのこと (そして LDM を支持する強力な議論) は、モデルを連鎖できるということです。CompoundPropertyModel
そのため、LDM によってサポートされている を引き続き使用できます。