Dodawanie do bazy

0

Posiadam dwie klasy

class Book {
 ...
}

class Reader {
 ...
}

Bede dodawal do bazy danych nowe ksiazki oraz nowych czytelnikow. Gdzie powininem umiescic metody add() ?
osobno w klasie Book i Reader? Czyli

class Book {
 ...
 public void add(){...}
}

public Reader {
 ...
 public void add(){...}
}

Czy lepiej utworzyc nowa klase Database i tam umiescic metode addBook() oraz addReader() ?
Wiem, ze oba rozwiazania beda dzialaly, jednak zastanawia mnie ktore jest bardziej poprawne i jak sie powinno pisac kod w takim przypadku

1

Jeśli umieścisz metody do operacji na bazie w tych swoich klasach, to będzie to wzorzec Active Record. Moim zdaniem niefajny, bo niby czemu klasy mają wiedzieć coś o bazie danych? Dobrze zaprojektowaną aplikację da się napisać i uruchomić w ogóle bez bazy danych.

Jeśli utworzysz jedną klasę Database, to będziesz miał gigantyczną klasę z tysiącem metod, w których sam się pogubisz, więc tą drogą nie idź. Możesz tworzyć takie klasy dla każdej tabeli osobno, wówczas będzie to wzorzec Table Data Gateway, o niebo lepszy od poprzedniego, bo oddzielasz logikę aplikacji od dostępu do danych.

A jak się powinno zrobić? Użyć ORM. :)

0

Dzieki to zaczynam googlowac o ORM :)

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