【问题标题】:How to store Objects from Database?如何存储数据库中的对象?
【发布时间】:2011-10-22 12:34:48
【问题描述】:

我正在开发一个 java 应用程序,它将以图形方式描述和组织数百个对象。这些对象中的每一个都是从 SQL 数据库中加载的,以便在此程序中使用。

我计划保留所有数据的本地副本,通过JDBC 连接检索,然后在本地对其进行排序(可能使用Merge Sort,因为这是我的最爱)

你会建议我如何在本地存储数据?理想情况下,它会很容易遍历、排序和与源数据库进行比较。

目前,我有一个名为 Ideas 的对象,这些对象是从数据库中填充的。然后,为了显示它们,我创建了相同数量的IdeaGraphics 对象并将它们添加到适当的 JPanel 中。这有时会很慢。

【问题讨论】:

  • 如何在本地存储它们(我假设你的意思是在内存中)主要取决于你如何访问它们。如果您将在某些空间的不同区域访问几何/空间对象,那么四叉树可能是合适的。如果您通过某个键访问对象,则地图/字典更适合等等。如果您需要在显示大量图形对象时具有可扩展性,您可能希望自己将它们绘制到面板上,而不是创建大量控件。跨度>
  • 我确实想以图形方式表示它们,但我需要能够单独单击每一个。我是否只需要进行像素数学来确定点击了哪一个?
  • 是的,正如建议的那样,您将只有一个自定义面板来绘制您的对象。当用户点击时,您可以计算出点击了哪个对象。

标签: java algorithm swing object performance


【解决方案1】:

您可以实现Comparator 接口并使用Collections.sort(),一种修改后的合并排序,如图here

【讨论】:

    【解决方案2】:

    也许你已经这样做了,但你的问题不是很清楚:

    您可以获得几乎一样多的数据类(创意)实例,但对于图形类则完全不同。将小部件和图形的数量限制为 1。

    构建您自己的自定义JPanel 类,为其提供一个想法列表并覆盖paintComponent 方法以绘制列表中的所有项目。

    如果您的可见区域很大,请加倍缓冲。

    【讨论】:

    • +1 表示一个好主意,这将帮助我消除我的一个大瓶颈 =]
    【解决方案3】:

    我不同意这一点,在本地内存中保存大量数据并不是一个好主意,有想法来模拟,来自Sql Engine(当今大多数引擎)的优秀优化预处理器,然后基本上更快最好EndUser PC

    如果您对数据库有一些 WHATEVER 权限,那么仍然存在将数据从 DbEngine 加载到 Embedded database(在内存上)的选项,可能是到 H2或者JavaDB

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 2021-12-11
      • 1970-01-01
      • 2013-01-10
      • 2013-05-12
      • 2013-02-07
      • 2010-11-17
      • 2011-01-22
      相关资源
      最近更新 更多