【发布时间】:2015-12-10 02:43:55
【问题描述】:
我正在从事 JavaFX 和数据库实践项目(主要是我是初学者),我有一个独特的课程,其中保存有关音乐会的记录(名称、地点、日期等)。我最初将它们保存在一个可观察的数组列表中,该数组列表填充了一个表格视图。从这里可以编辑、删除或添加新记录。
我现在使用 ORMLite 和 sqlite 将这些存储在数据库中。这样我就可以对数据进行过滤(即显示特定位置的所有事件),然后将其显示在表格上。
我的问题是,当我从数据库中读取数据时,我将其转换为 ObservableArrayList,以便表格视图可以使用它,但是通过创建新数组列表,我的编辑/新建/删除按钮只会影响这个列表,而不是数据库。问题是每次我执行查询(例如向数据库添加或删除记录)时,它都需要为 tableView 重新生成 observableArrayList,这需要大约 5 秒的时间来处理大约 250k 条记录。
有没有更有效的方法来处理数据库和 javaFx tableViews?
【问题讨论】:
-
如果您希望数据库中的更新发生,而用户正在对表进行操作,则可能需要一些时间才能完成,因为数据库操作是耗时的操作。如果你想摆脱滞后,你可以使用线程。一个很好的阅读将是问题的答案Using threads to make database requests
-
为什么每次更新都需要“复制”数据?为什么不直接在数据库中执行更新,如果成功,更新可观察列表中的本地数据?
标签: java database javafx tableview ormlite