2014-02-19 29 views
0

我似乎一直絆倒這個問題。我似乎無法得出直接的答案。Java Web應用程序sql結果與對象列表

我有一個使用Java,Tomcat,JSP,MySQL等的MVC web應用程序。我沒有使用框架。我有模型實體代表數據庫中的每個表。我正在使用DAO訪問數據庫。

假設你有一個人,一份工作和一份申請。

在視圖中,您需要將這些關聯起來才能爲列表生成一行。

到目前爲止,我一直在DAO中進行JOIN,並使用ResultSupportResultSet返回一個長的SQL結果。然後,我使用JSTL forEach標記在JSP中進行循環。

我知道這不是最好的辦法。

但是,那麼,我需要在DAO中創建哪些數據來傳回每一行數據?我是否在視圖中定義了一個包含所需的所有字段名稱的新對象?這是一個DTO嗎?或者我將原始對象填入HashMap並傳回?

當我問數據庫時,我認爲做一個連接會比用一堆小的查詢返回單個對象更高效。

必須有一個可接受的模式來做到這一點?我寧願遵循一個可接受的解決方案。

有人可以請指出我在正確的方向嗎?

感謝

回答

1

如果你只有一個單一視圖,然後創建一個普通的舊式Java對象(PO​​JO)工作正常。我將創建一個POJO,其中包含視圖所需的所有字段。然後創建一個集合(E.G. ArrayList)。 POJO的集合是您的數據傳輸對象(DTO)。

數據庫連接代價高昂。所以你想打開數據庫,獲取數據並將它存儲到POJO集合中。然後,您可以關閉數據庫連接或返回到池(如果您正在使用數據庫連接池)。關鍵是,不要試圖創建一個html顯示,同時保持活動的數據庫連接。獲取數據,關閉數據庫連接(或返回池),然後執行顯示邏輯(I.E.查看)。

是的,你想一次選擇所有的信息(做一個數據庫連接)。同樣的想法,使用數據庫連接,然後儘快關閉它。你想避免多個打開/關閉,打開/關閉等。

希望有幫助。你可能想把你的問題縮小到更具體的問題。人們很難回答廣泛的架構問題。祝你好運。

+0

這是一個很好的答案。謝謝。你能推薦一個描述這樣的架構的資源嗎?我發現的所有資源都過於簡化,無法使用。例如只有一個對象是每個視圖。有沒有確定的工作或教科書?這不是一個高級話題。 – PrecisionPete

+0

很高興有幫助:)請考慮標記我的答案爲「接受」。該模式經常使用。這裏有幾個鏈接讓你開始:http://www.codeproject.com/Tips/372152/Mapping-JDBC-ResultSet-to-Object-using-Annotations(你不需要使用註釋,只需要替換一個類與getter和setter(這是一個Bean是什麼)。Oracle教程詳細介紹了數據庫連接的經濟性:http://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html。希望有所幫助。請考慮標記我的答案爲接受:) – lorinpa