From 8aead0ecc5b45aea5f17a63341225743d23a0027 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 19 Feb 2026 06:06:55 +0000 Subject: [PATCH] Optimize member list loading by moving DB query to background thread Co-authored-by: G30RG3-GJ <203693057+G30RG3-GJ@users.noreply.github.com> --- .../ui/listmember/MemberListController.java | 41 ++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/library/assistant/ui/listmember/MemberListController.java b/src/library/assistant/ui/listmember/MemberListController.java index 9aa65be..37be5a0 100644 --- a/src/library/assistant/ui/listmember/MemberListController.java +++ b/src/library/assistant/ui/listmember/MemberListController.java @@ -13,6 +13,7 @@ import java.util.logging.Logger; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; +import javafx.concurrent.Task; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -75,22 +76,34 @@ private Stage getStage() { private void loadData() { list.clear(); - DatabaseHandler handler = DatabaseHandler.getInstance(); - String qu = "SELECT * FROM MEMBER"; - ResultSet rs = handler.execQuery(qu); - try { - while (rs.next()) { - String name = rs.getString("name"); - String mobile = rs.getString("mobile"); - String id = rs.getString("id"); - String email = rs.getString("email"); + Task> task = new Task>() { + @Override + protected List call() throws Exception { + List memberList = new ArrayList<>(); + DatabaseHandler handler = DatabaseHandler.getInstance(); + String qu = "SELECT * FROM MEMBER"; + ResultSet rs = handler.execQuery(qu); + while (rs.next()) { + String name = rs.getString("name"); + String mobile = rs.getString("mobile"); + String id = rs.getString("id"); + String email = rs.getString("email"); + + memberList.add(new Member(name, id, mobile, email)); + } + return memberList; + } + }; - list.add(new Member(name, id, mobile, email)); + task.setOnSucceeded(e -> { + list.setAll(task.getValue()); + }); - } - } catch (SQLException ex) { - Logger.getLogger(BookAddController.class.getName()).log(Level.SEVERE, null, ex); - } + task.setOnFailed(e -> { + Logger.getLogger(MemberListController.class.getName()).log(Level.SEVERE, "Failed to load members", task.getException()); + }); + + new Thread(task).start(); tableView.setItems(list); }