3

我一直在阅读有关调整检票口会话大小的信息,我发现建议使用 LoadableDetachableModel 不要让模型永远存在。属性模型(Property 和 PropertyCompoundModel)这么贵吗?

何时使用 LDM 或属性模型?

4

2 回答 2

4

如果您使用来自数据库的数据,几乎总是最好使用 a LoadableDetachableModel,以便仅序列化重新加载所需的 id。

PropertyModel并且CompoundPropertyModel可以包装模型并使其更易于在表单中使用,但减少序列化到会话中的成本的主要方法是使用LoadableDetachableModel.

于 2012-05-17T03:39:23.933 回答
4

它始终取决于您要达到的目标。因此,了解成本是多少很重要。

在请求之间,Wicket 通常会序列化您的页面对象及其引用的所有内容。这包括页面上的所有组件以及它们的所有模型。唯一不会发生这种情况的是页面是无状态的。

大多数模型实现都包含对底层模型对象的非瞬态引用,因此如果您的模型包含对大对象的引用并且页面不是无状态的,则会导致序列化时间的开销,更重要的是,会议。

LoadableDetachableModel工作方式不同,它只包含对底层模型对象的临时引用,因此当它被序列化时,模型对象不是。这样做的缺点是您必须为每个请求重建模型对象。

所以你的问题真的是这样的:使用传统模型的成本是否超过了成本LoadableDetachableModel?如前所述,如果您的模型对象来自数据库,则几乎总是值得使用 LDM。

您必须记住的另一件事(也是 LDM 支持的一个强有力的论点)是模型可以被链接。因此,您仍然可以使用CompoundPropertyModel由 LDM 支持的 a。

于 2012-05-17T10:13:20.917 回答