我试图找出哪种解决方案可以更好地优化服务器性能。
解决方案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更好。
答案 0 :(得分:0)
第一个解决方案是更好的选择。 我认为习惯这样做:传递你的整个对象"学生"如果你打算在" freemarker page"中使用他的大部分字段。如果您只需要一个(或几个,取决于对象的大小),您可以使用第二个解决方案。
答案 1 :(得分:0)
您可能不希望将该实体用作可能具有安全隐患的表单支持对象。例如,可以伪造恶意请求来设置一些不需要的属性。
因此,为每个要处理的表单创建显式表单支持对象通常会更好。它需要你编写更多代码,但它也会否定一些常见问题(比如你所拥有的那些)。
答案 2 :(得分:0)
要用其他问题回答您的问题,您是否遇到了性能问题?
如果显示的数据量很少,那么任何一种解决方案的性能都不会有差异。考虑到这一点,第一个解决方案更具可读性。传递整个对象允许GUI更改使用Student对象上的更多字段,如果忘记手动添加,则不会导致缺少字段的错误。
在我参加过的团队中,我们使用页面上需要的数据子集创建单独的GUI类。这使得可以访问诸如密码哈希之类的字段。一个示例是创建一个StudentUI对象,将Student in作为构造函数参数并设置必要的字段。