2016-02-16 54 views
2

我想找出哪個解決方案更好地優化服務器性能。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中的吸氣劑是更好然後在Freemarker上調用getter。

+3

sol1很好 – Abdelhak

回答

0

要對其他問題回答你的問題,你遇到性能問題?

在顯示少量數據的情況下,兩種解決方案的性能應該沒有差別。考慮到這一點,第一種解決方案更具可讀性。如果您忘記手動添加一個對象,則傳遞整個對象允許您的GUI更改使用Student對象上的更多字段,而不會導致缺少字段的錯誤。

在我參與過的團隊中,我們創建了單獨的GUI類,其中包含頁面上需要的一部分數據。這可以讓密碼散列等字段無法訪問。一個例子是創建一個將Student作爲構造參數並設置必要字段的StudentUI對象。

+0

我已經在使用單獨的GUI(表示我的對象),並且現在沒有遇到性能問題,因爲我在一個非常大的項目中工作,並且正在嘗試構建一個基於weel的應用程序以避免出現問題未來。謝謝回覆。 –

0

解決方案一號是更好的選擇。 我認爲這樣做是習慣性的:如果你打算在「freemarker頁面」中使用他的大部分字段,則傳遞你的整個對象「student」。如果您只需要一個(或少數,取決於對象的大小),則可以使用解決方案二。

0

您可能不希望將該實體用作可能存在安全隱患的表單支持對象。例如,可以僞造惡意請求來設置一些不需要的屬性。

因此,最好爲每個要處理的表單創建一個顯式的表單支持對象。它會要求你編寫更多的代碼,但它也會抵消一些常見問題(比如你正在使用的問題)。

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