【问题标题】:Spring mvc model Which better : adding the whole object or adding its attributes one by one to the model?Spring mvc model 哪个更好:将整个对象添加或将其属性一一添加到模型中?
【发布时间】:2016-02-16 15:22:19
【问题描述】:

我正在尝试找出哪种解决方案更能优化服务器性能。

解决方案 1:

ModelAndView modelView = new ModelAndView("view-name");
Student student = new Student();
// assuming Student object has a lot of     attributes
modelView.addObject("student", student);

解决方案 2:

Student student = new Student(); 
modelView.addObject("firstname", student.getFirstName());
modelView.addObject("lastname", student.getLasttName());
modelView.addObject("age", student.getAge());

该模型将在 Freemarker 页面上使用,所以真正的问题是在 Java 中调用 getter 是否比在 Freemarker 上调用 getter 更好。

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    用另一个问题回答您的问题,您是否遇到性能问题?

    显示的数据量很少,这两种解决方案的性能应该没有区别。考虑到这一点,第一个解决方案更具可读性。传递整个对象允许您的 GUI 更改在 Student 对象上使用更多字段,而如果您忘记手动添加字段,则不会导致缺少字段的错误。

    在我参与过的团队中,我们使用页面上需要的数据子集创建单独的 GUI 类。这样可以防止访问密码散列等字段。一个示例是创建一个 StudentUI 对象,将 Student 作为构造函数参数并设置必要的字段。

    【讨论】:

    • 我已经在使用单独的 GUI(我的对象的表示形式)并且目前没有遇到性能问题,因为我在一个非常大的项目中工作并且我正在尝试构建一个基于 weel 的应用程序以避免出现问题未来。感谢您的回复。
    【解决方案2】:

    解决方案一是更好的选择。 我认为这样做是习惯性的:如果您要在“freemarker 页面”中使用他的大部分字段,则传递您的整个对象“学生”。如果您只需要一个(或很少,这取决于对象的大小),您可以使用第二个解决方案。

    【讨论】:

      【解决方案3】:

      您可能不想将实体用作可能具有安全隐患的表单支持对象。例如,可以伪造恶意请求来设置一些不需要的属性。

      因此,通常最好为每个要处理的表单创建一个明确的表单支持对象。它会要求您编写更多代码,但它也可以解决一些常见问题(例如您遇到的问题)。

      https://stackoverflow.com/a/22281697/3365426

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-29
        • 2019-10-01
        • 1970-01-01
        • 2017-07-28
        • 1970-01-01
        相关资源
        最近更新 更多