在我的 Flex Java BlazeDS 应用程序中,我通过以下方法从数据库中获取数据。
- 通过启动对 Java 的 RemoteObject 调用从 Flex 请求数据
- 在 Java 中执行相应的查询,获取结果集并将结果集作为列表传递回 Flex
- 在Remote Object的resultHandler中接收数据,将其转换为Array Collection并显示数据。
虽然此过程是 BlazeDS DataSerilization 的教科书方法,但当数据包含数百万条记录时,所花费的时间非常巨大。请在下面找到一些统计数据。
- 从 Flex 调用 Java 所需的时间:5 毫秒
- 建立数据库连接所需时间:3000ms
- 执行查询所需时间:120ms
- 遍历结果集并将数据添加到列表所需的时间:8000 毫秒
- 将数据从 Java 传回 Flex 所需的时间:2000 毫秒
- 将 event.result 转换为数组集合所需的时间:6000 毫秒
所用总时间:19125 毫秒(对于 MySQL 数据库),对于 Oracle 数据库,数据库中有 143,000 条记录需要更多时间。
显然,问题在于将 ResultSet 转换为 Java 中的 List(必须迭代每条记录)以及将 List 转换为 Flex 中的 ArrayCollection。
有什么方法或程序可以加快这个过程。
一种可能的过程可能是在 Java 中避免这些迭代并直接将 ResultSet 传递给 Flex。那可能吗???