Flex Java BlazeDS アプリケーションでは、次の方法で DataBase からデータをフェッチします。
- Java への RemoteObject 呼び出しを開始して Flex からデータを要求する
- それぞれのクエリを Java で実行し、結果セットを取得して、結果セットをリストとして Flex に渡します。
- リモートオブジェクトのresultHandlerでデータを受け取り、配列コレクションに変換して表示します。
この手順は BlazeDS DataSerilization の教科書的な方法ですが、データに何百万ものレコードが含まれている場合、非常に長い時間がかかります。以下のいくつかの統計を見つけてください。
- Flex から Java を呼び出すのにかかる時間: 5 ミリ秒
- データベース接続の確立にかかる時間: 3000ms
- クエリの実行にかかる時間: 120ms
- 結果セットを反復処理してリストにデータを追加するのにかかる時間: 8000ms
- Java から Flex にデータを渡すのにかかる時間: 2000 ミリ秒
- event.result を配列コレクションに変換するのにかかった時間: 6000ms
総所要時間: 19125 ミリ秒 (MySQL データベースの場合)、データベース内の 143,000 レコードの Oracle データベースの場合はそれ以上。
明らかに問題は、Java で ResultSet を List に変換するとき (各レコードを繰り返す必要があります)、および Flex で List を ArrayCollection に変換するときにあります。
プロセスをスピードアップできる方法や手順はありますか?
考えられるプロセスの 1 つは、Java でこれらの反復を回避し、ResultSet を直接 Flex に渡すことです。それは可能ですか?