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