1

在我的 Flex Java BlazeDS 应用程序中,我通过以下方法从数据库中获取数据。

  1. 通过启动对 Java 的 RemoteObject 调用从 Flex 请求数据
  2. 在 Java 中执行相应的查询,获取结果集并将结果集作为列表传递回 Flex
  3. 在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。那可能吗???

4

1 回答 1

1

考虑使用不同的数据库技术,例如后端的 ORM 技术应该更快。我目前正在开发一个应用程序,虽然它不会一次提取大量记录,但有很多用户一次提取记录,与我们使用 JDBC 启动项目时相比,我们选择的 ORM 技术为我们提供了明显更快的响应。

于 2012-10-25T10:20:56.290 回答