1
在我的Flex Java BlazeDS應用程序中,我通過以下方法從DataBase中獲取數據。從Flex的Flex Java BlazeDS - DataBase Data
- 請求的數據通過啓動一個RemoteObject調用Java的
- 在Java中執行相應的查詢,得到的結果集,並傳遞結果集,作爲列表回的Flex
- 收到的數據的resultHandler遠程對象,將其轉換爲Array Collection並顯示數據。
儘管此過程是BlazeDS DataSerilization的教科書方法,但是當數據包含數百萬條記錄時所花費的時間非常長。請在下面找到一些統計數據。
- 時間採取從Flex的調用Java:5ms的
- 建立數據庫連接所需的時間:3000ms採取
- 的時間來執行查詢:120毫秒
- 通過ResultSet來iteriate和數據添加到拍攝時間清單:8000MS
- 到回從Java數據傳遞到Flex的拍攝時間:2000毫秒
- 時間event.result轉換爲數組集合採取:6000ms
總共採集時間:19125ms(用於MySQL數據庫)以及更多Oracle數據庫用於數據庫中143,000條記錄。
很明顯,問題出在將Java中的ResultSet轉換爲List(必須提示每條記錄)並將Flex中的List轉換爲ArrayCollection時。
有沒有什麼方法或程序可以加快這個過程。
一個可能的過程可能是在Java中避免這些引發並直接將ResultSet傳遞給Flex。那可能嗎???
不要一次加載150000條記錄。改爲使用延遲加載策略。 – RIAstar
我想知道你的代碼是將event.result轉換爲ArrayCollection。我想知道你的Java代碼是如何迭代你的結果集並將數據添加到列表中的。我認爲這20秒記錄很不錯。在我工作的一個應用程序上;它大約需要兩次才能獲得那麼多記錄[並將其呈現在DataGrid中]。在我們的案例中,我們認定這是一個人們可以等待的邊緣案例。 – JeffryHouser