java - Flex Java BlazeDS - 数据库数据

标签 java apache-flex

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

  1. 通过启动对 Java 的 RemoteObject 调用从 Flex 请求数据
  2. 在 Java 中执行相应的查询,获取结果集并将结果集作为列表传递回 Flex
  3. 接收Remote Object的resultHandler中的数据,将其转换为Array Collection并显示数据。

虽然此过程是 BlazeDS DataSerilization 的教科书方法,但当数据包含数百万条记录时,所花费的时间非常长。请在下面找到一些统计数据。

  • 从 Flex 调用 Java 所需的时间:5ms
  • 建立数据库连接所需的时间:3000ms
  • 执行查询所需的时间:120ms
  • 迭代结果集并将数据添加到列表所需的时间:8000 毫秒
  • 将数据从 Java 传回 Flex 所需的时间:2000ms
  • 将 event.result 转换为数组集合所需的时间:6000ms

总耗时:19125 毫秒(对于 MySQL 数据库),对于 Oracle 数据库,数据库中的 143,000 条记录需要更多时间。

显然,问题出在 Java 中将 ResultSet 转换为 List(必须迭代每条记录)以及 Flex 中将 List 转换为 ArrayCollection 时。

有什么方法或程序可以加快这个过程。

一个可能的过程可能是避免 Java 中的这些迭代并直接将 ResultSet 传递给 Flex。这可能吗???

最佳答案

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

关于java - Flex Java BlazeDS - 数据库数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12780937/

相关文章:

java - 如何获取字符串数组中的数字并将它们放入 int 数组中

java - 我可以调用 super 构造函数并在 java 中传递类名吗?

apache-flex - 在 Adob​​e Air 中获取当前登录的操作系统用户

apache-flex - 如何在 htmltext CDATA 中进行绑定(bind)

java - 在 HTTP 请求 header 中插入用户凭据

Java、Hibernate - 如何创建通用 getByColumnValue() 方法?

java - 使用 Codename One NativeInterface 调用 native Android 库时仍然出现 Nullpointer

apache-flex - 如何在命令行上从源代码构建我的 Flex 库以便我可以对其进行 RSL?

apache-flex - 为什么FDT 5.5找不到我的Flex SDK?

android - 可以在 Flex Native 扩展中与其他应用程序共享内部文件(例如使用 FileProvider)