#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: 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
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.
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) ?
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
@Eoghan: Dokładnie tak robię. Dzięki wielkie!