2015-08-03 18 views
5

Mam klasy "kontener" z polami, które są zawarte w kilku tabelach bazy danych i używam wzoru DAO do dostępu do danych.Jeden DAO na klasę "kontener" lub jeden DAO na stół?

Pytanie brzmi, czy należy utworzyć pojedyncze DAO dla tej klasy "kontenera", czy lepiej jest mieć jedno DAO dla tabeli i połączyć dane?

Odpowiedz

10

Należy zaprojektować DAO zgodnie z potrzebami aplikacji, a nie z układem bazy danych. Rozpocznij z jednym DAO, a jeśli stanie się zbyt duży, wtedy zreorganizuj go na wiele DAO w sposób, który ma sens dla twojego kodu.

Cały punkt DAO jest ukryć wszelkie pojęcia bazy danych (np. Tabele) z aplikacji. Twoja aplikacja powinna po prostu wyświetlać ją jako usługę przy użyciu pewnych użytecznych metod.

Na przykład, jeśli twoja aplikacja potrzebuje pewnych danych użytkownika, które pochodzą zarówno z tabeli Użytkownicy, jak i tabeli Adresy e-mail, twój kod aplikacji nie powinien koordynować dwóch DAO - powinien wywoływać jedną metodę DAO getUserDetails(), a DAO będzie ukryć fakt, że należy wywołać wiele tabel.

Polecam pierwszą z opcji w pytaniu, ale nie ograniczę się do zasady "jeden DAO na klasę kontenera".