Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Java desktop - jak oddzielić dostęp do bazy danych od wątku UI?

Wygląda na to, że zapytania bazy danych są uruchamiane z wątku interfejsu użytkownika, nawet jeśli mówisz, że zaplanowane zadanie uruchamia zapytania (?). Aby mieć pewność, możesz wydrukować stos, w którym uzyskujesz dostęp do bazy danych:

new Exception().printStacktrace();

Przechodząc do proponowanego rozwiązania:wydaje się, że jest to przyzwoity projekt, jeśli twoje zapytania bazy danych są powolne i w przeciwnym razie zamroziłyby twój interfejs użytkownika. Możesz zaimplementować system zdarzeń między warstwą interfejsu użytkownika a warstwą db, być może proste podejście oparte na kolejce.

EDYTUJ:

Są najprawdopodobniej przykłady, jak zaimplementować rozwiązanie oparte na zdarzeniach.

Zastrzeżenie:od wielu lat nie robiłem żadnego prawdziwego programowania interfejsu użytkownika.

  1. Użytkownik klika przycisk w interfejsie użytkownika. Wątek interfejsu użytkownika umieszcza obiekt zdarzenia (DataWantedEvent) w kolejce (java.util.Queue), zmienia etykietę ("Oczekiwanie na dane..."), a następnie kontynuuje i czeka na inne interakcje użytkownika.
  2. Wątek warstwy db pobiera zdarzenie z kolejki i wysyła zapytanie do bazy danych. Wynik jest wysyłany z powrotem do innej kolejki w obiekcie wynikowym.
  3. Wątek interfejsu użytkownika (prawdopodobnie nie główny wątek) pobiera obiekt wynikowy z kolejki wyników i aktualizuje interfejs użytkownika.

Kolejka do wysyłania obiektów wynikowych z powrotem do interfejsu użytkownika może nie być potrzebna. Metodę aktualizacji można wywołać bezpośrednio.

Jeśli użytkownik kliknie przycisk anulowania, zdarzenie aktualizacji/wywołanie zwrotne może zostać zignorowane lub, jeśli to możliwe, zapytanie bazy danych może zostać anulowane.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy to błąd sortowania MySQL?

  2. W JavaFX jak dodać combobox z danymi w widoku tabeli

  3. jak wstawić wiele tablic do bazy danych za pomocą PHP

  4. Niektóre klawisze nie działają poprawnie w MySQL Workbench for Mac

  5. Zamykanie połączeń JDBC w puli