2013-12-17 34 views
0

假設Tomcat 7,MySql 5.5和JSP以及手工編碼的DAO ...返回JSTL結果或對象列表的Servlet?

從「生產」應用程序的持久性來看,以下查詢體系結構之間是否存在顯着的偏好?

無論哪種情況,servlet都會調用DAO來獲取項目,然後將它們傳遞給JSP以在屬性中顯示。

1)DAO返回一個JSTL結果使用:result = ResultSupport.toResult(rs);

2)DAO返回包含充滿數據的對象的列表。

對我來說,如果你要對它們進行實質性操作,對象似乎更好。即更新它們。但是,僅僅顯示一個數據表,對象列表太多了。對於大量使用的應用程序,似乎這些列表將消耗大量服務器資源,但幾乎沒有實際的好處。另外,不同顯示要求的連接表似乎需要大量的編碼工作和維護。

似乎有一個DAO返回一個JSTL結果輕量級顯示的目的會更容易在服務器上,也將更容易編碼維護。

我知道,在JSP中使用JSTL SQL標記在生產環境中被忽視 - 儘管我從來沒有真正理解爲什麼......在Java servlet中使用JSTL Result會引起同樣的否定意見嗎?

我一直無法找到解釋這兩種方法之間的首選體系結構的權威性指南。鑑於JSTL結果的便利性,我很驚訝它很少被提及。

有什麼想法?

感謝

+0

如果你想發現你的服務器和環境的真實結果,我會建議使用每個選項進行性能測試以確定最佳結果。國際海事組織使用列表方法,不要試圖推翻這個解決方案,除非你使用探查器來確定真正的瓶頸是列表的使用。 –

+0

我相信[任何方式返回Java中的ResultSet?]的答案(http://stackoverflow.com/questions/20603240/any-way-to-return-a-resultset-in-java#comment30829384_20603240)SO帖子可能對你感興趣(雖然它沒有討論和你一樣的場景)。 –

回答

0

DAO的主要思想是封裝數據訪問邏輯和業務邏輯隔離開來。 Option 2就是這樣做的。

Option 1使業務邏輯與數據模型緊密結合,因爲它需要知道記錄集的確切結構。如果您決定重構數據庫實現,則必須重新編寫業務邏輯層的一部分。