Bazy danych a SWING

0

Panowie, zabieram się do pierwszej aplikacji poważnej SWING+mysql (byc moze SQLite)

Projektuje klasy póki co. Dwie sprawki:

  1. Czy robice też tak w swoich aplikacjach, że tworzycie kontroler klasy np. Klient i potem taką samą klase z operacjami na bazie danych (model)?
  2. Czy jest sens w kontrolrze pisać wszystkie metody get i set? Skoro i tak będę pobierał tylko jakąś grupę danych (np. imie, nazwisko, adres i telefon klienta). Robienie tego w oddzielnych metodach - czyli np. getImie(), getNazwisko(), getAdres() nie ma chyba sensu? Lepiej chyba od razu zrobic jedna metoda getPersonalData().

Poprawcie mnie jesli sie myle !

0

W Swingu trochę inaczej. Masz sobie ClientView, które jest interfejsem z metodą showClient(Client) względnie jak masz tabelkę to showAllClients(Collection). Następnie jest sobie kontroler ClientController, który ma jako swoje pola referencje do różnych odmian ClientView oraz do jakiegoś ClientDAO zapewniającego dostęp do bazy danych.
ClientView ma ponadto referencję do ClientController, ale po interfejsie, który to interfejs zapewnia wywołanie różnych metod kontrolera.

Ergo:
ClientView - zamyka w sobie prezentację danych. Dostaje na wejściu obiekt Client i to co z nim zrobi to już jego problem.
ClientController - zamyka w sobie różne działania na obiekcie Client.
Client - reprezentuje obiekt klienta.
ClientDao - obudowuje dostęp do bazy danych.

0

Hmm... Chyba rozumiem więcej już.
W, którym momencie powinno, więc nastąpić pobranie danych z bazy? W konstruktorze klasy Client, powinna być użyta metoda klasy ClientDao??

0

Na odwrót:

class ClientController {

   public void showClientAction(Long clientId, ClientPresenter targetView){
      Client c = clientDao.getClientById(clientId);
      targetView.showClientInfo(c);
   }

}

W dużym uproszczeniu. targetView Powinno być konfigurowalne(najlepiej z poziomu jakiegoś IoC/DI), ale od biedy można je przekazywać jako parametr.

1 użytkowników online, w tym zalogowanych: 0, gości: 1