[MVC] Połączenie z bazą danych - gdzie?

0

Piszę obecnie aplikację w PHP, implementując wzorzec MVC (Model-View-Controller). I zastanawia mnie jedna rzecz - czy połączenie z bazą danych powinno następować w modelu, który danych z bazy potrzebuje, czy też w kontrolerze, który ładuje sobie kilka modeli, od których dopiero potem pobiera dane.

Tak na zdrowy rozsądek, to połączenie z bazą powinno być w konstruktorze modelu, mam rację?

0

Połączenie z bazą danych nie powinno być ani w kontrolerze, ani w modelu, tylko w osobnym komponencie zarządzającym transakcjami. Kontroler powinien jedynie wysłać do niego żądanie rozpoczęcia transakcji. Model nie powinien wiedzieć nic o bazie danych, za wczytywanie i zapis obiektów powinna być odpowiedzialna osobna warstwa DAO i ona powinna dostawać z zarządcy transakcji bieżące połączenie z bazą danych. Dzięki temu ewentualna późniejsza zmiana systemu bazy danych nie pociąga za sobą przepisywania 90% systemu.

W najprostszym przypadku zarządca transakcji otwiera i zamyka połączenie, w bardziej rozbudowanym - trzyma pulę połączeń (w PHP chyba niemożliwe lub b. trudne do uzyskania), a w ostateczności - kontroluje transakcje rozproszone (w PHP niestety również niemożliwe).

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