Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVC模型哪一个更好:将整个对象添加到模型中还是将其属性逐个添加到模型中?_Java_Spring_Spring Mvc - Fatal编程技术网

Java SpringMVC模型哪一个更好:将整个对象添加到模型中还是将其属性逐个添加到模型中?

Java SpringMVC模型哪一个更好:将整个对象添加到模型中还是将其属性逐个添加到模型中?,java,spring,spring-mvc,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 Studen

我试图找出哪种解决方案更适合优化服务器性能

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

解决方案一是更好的选择。 我认为这样做是一种习惯:如果要在“freemarker页面”中使用对象的大部分字段,则传递整个对象“student”。在只需要一个(或几个,取决于对象的大小)的情况下,可以使用解决方案2

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

因此,通常最好为每个要处理的表单创建一个显式表单支持对象。这将需要您编写更多的代码,但它也会消除一些常见的问题(比如您正在遇到的问题)


请参见

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

在显示少量数据的情况下,两种解决方案的性能应该没有差别。考虑到这一点,第一种解决方案更具可读性。通过传递整个对象,GUI可以更改学生对象上的“使用更多字段”,如果忘记手动添加字段,则不会导致缺少字段的错误


在我所在的团队中,我们使用页面上需要的数据子集创建单独的GUI类。这会阻止访问密码哈希等字段。例如,创建一个StudentUI对象,将Student作为构造函数参数,并设置必要的字段

我已经在使用单独的GUI(我的对象的表示),目前还没有遇到性能问题,因为我在一个非常大的项目中工作,我正在尝试构建一个基于weel的应用程序,以避免将来出现问题。谢谢你的回复。