Spring mvc model哪个更好:添加整个对象或者将其属性逐个添加到模型中?

时间:2016-02-16 15:22:19

标签: java spring spring-mvc

我试图找出哪种解决方案可以更好地优化服务器性能。

解决方案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更好。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  

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

     

因此,为每个要处理的表单创建显式表单支持对象通常会更好。它需要你编写更多代码,但它也会否定一些常见问题(比如你所拥有的那些)。

请参阅https://stackoverflow.com/a/22281697/3365426

答案 2 :(得分:0)

要用其他问题回答您的问题,您是否遇到了性能问题?

如果显示的数据量很少,那么任何一种解决方案的性能都不会有差异。考虑到这一点,第一个解决方案更具可读性。传递整个对象允许GUI更改使用Student对象上的更多字段,如果忘记手动添加,则不会导致缺少字段的错误。

在我参加过的团队中,我们使用页面上需要的数据子集创建单独的GUI类。这使得可以访问诸如密码哈希之类的字段。一个示例是创建一个StudentUI对象,将Student in作为构造函数参数并设置必要的字段。