Wpis z mikrobloga

#java #jdbc #sql #naukaprogramowania #bazydanych #sql
Mirasy, mam sobie szkielet takiego programu (screen poniżej) no i wypisałem sobie wszystkie pola z bazy danych do tabeli w JavaFx. Tylko bardzo zależało mi na rozdzieleniu roli gui i bazy danych. Dlatego mam jedną klasę która pobiera mi te sale i zapisuje mi je wszystkie do listy, a potem w gui pobieram to sobie metodą getRooms() i wypisuje do tabeli w gui. Działa to ładnie kod jest czytelny tylko teraz zastanawiam się czy robię to poprawnie, bo najpierw zapisuję sobie z bazy danych wszystko do listy (jako obiekty Room), a potem tą listę obiektów wczytuję w gui.
Pewnie bardziej wydajnie byłoby wczytywać z bazy danych informację o sali i od razu wprowadzać ją do tabeli bez tworzenia listy obiektów, ale wtedy kod jest mniej czytelny, bo w klasie z gui będą metody bazodanowe, a zależało mi na rozdzieleniu baz od gui.
Jak to Mirki rozwiązać?
a) Zostawić tak jak jest w jednej klasie pobierać sale z bazy danych i jako obiekty Room zapisywać je do tablicy, a potem sobie ją wczytać w gui
b) W jednej klasie na po kolei pobierać sale z bazy danych i od razu wprowadzać je do tabeli w gui
c) ?
Patres - #java #jdbc #sql #naukaprogramowania #bazydanych #SQL 
Mirasy, mam sobie sz...

źródło: comment_GfjhVvgxvRNwCyfCtvqixmtpFXpe7b2L.jpg

Pobierz
  • 2
  • Odpowiedz
@Patres: Z tego co napisałeś to ogólnie wygląda ok.
Powinieneś mieć klasy:
Room - model danych
RoomDao - interfejs do komunikacji z bazą danych
RoomDaoImpl - implementacja interfejsu
SchoolController - wstrzyknięta tabela przez @FXML i wstrzyknięty lub po prostu utworzony obiekt DAO. W kontrolerze (jeśli korzystasz z interfejsu Initializable) to w metodzie initialize() pobierasz dane z bazy przez obiekt DAO zwracając np. w formie listy i wrzucasz je do tabeli przez setItems(). W kontrolerze powinieneś mieć więc tylko kilka
  • Odpowiedz
To co możesz zrobić ciekawego u siebie, to wykorzystać to, że w Javie8 i JavieFX masz do dyspozycji ObservableList, więc możesz podpiąć słuchacza, który po dodaniu rekordu do tabeli będzie automatycznie zapisywał go w bazie.


@Eoghan: Dokładnie tak robię. Dzięki wielkie!
  • Odpowiedz