2015-09-14 43 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個數組。一個用於整個列表,一個用於新記錄,一個用於髒記錄,另一個用於記錄被刪除。您可以在編輯/新建/刪除按鈕被按下時將記錄添加到列表中,然後最終您可以一次保存所有記錄。

相關問題