2015-09-14 69 views
0

我正在为JavaFX和数据库实践(主要是我是初学者)开发一个项目,在那里我有一个独特的类,它保存关于音乐会(名称,位置,日期等等)。我原本是在一个可观察的数组列表中看到这些数据。从这里可以对记录进行编辑,删除或添加新记录。将可编辑的tableView链接到javaFX中的数据库

我现在使用ORMLite和sqlite将它们存储在数据库中。这样我就可以对数据执行过滤(即显示特定位置的所有事件),然后在表格中显示。

我的问题是,当我从数据库中读取数据时,将其转换为ObservableArrayList,以便表视图可以使用它,但是通过创建新的数组列表,我的编辑/新建/删除按钮只会影响这个列表,不是数据库。问题是,每次我执行查询时,例如添加或删除记录到数据库,它都需要重新生成tableView的observableArrayList,它需要大约5秒的时间,约250k条记录。

是否有更有效的方式来处理数据库和javaFx tableViews?

+1

如果您希望数据库中的更新发生,而用户在表上执行某些操作时,可能需要一段时间才能完成,因为数据库操作是耗时的操作。你可以使用线程,如果你想摆脱滞后。一个非常好的阅读将是问题的答案[使用线程来发出数据库请求](http://stackoverflow.com/questions/30249493/using-threads-to-make-database-requests/30250308#30250308) – ItachiUchiha

+1

为什么你需要“重现”每次更新的数据吗?为什么不直接在数据库中执行更新,如果成功,更新可观察列表中的本地数据? –

回答

0

是否有更有效的方式来处理数据库和javaFx tableViews?

  1. 怎么样,当你更新某些字段,然后通过你的记录列表,并只让DAO上那些肮脏的要求制定某种肮脏的标志上的记录?也许一个枚举与CREATE,DELETE,UPDATE,NONE。

  2. 另一个想法是,只要你更新记录做你dao.update(...)dao.delete(...),或dao.create(...)电话虽然你可能想要做的机会都曾时间。

  3. 最后的想法是保持4个数组。一个用于整个列表,一个用于新记录,一个用于脏记录,另一个用于记录被删除。您可以在编辑/新建/删除按钮被按下时将记录添加到列表中,然后最终您可以一次保存所有记录。

相关问题