Scenariusz:
- Stos: Java, Spring, Hibernacja.
- Model: aplikacja klient-serwer.
- Wzór: Model-View-Controller (MVC).
Klasy warstwy usług mają trzy zachowania:
Niektóre usługi zawierają regułę biznesową w ramach metod i delegują trwałość aplikacji. Lubić:
EntityManager.save (encja);
Niektóre usługi po prostu wywołują funkcję bazy danych (przekazują parametry), takie jak:
CallableStatement cls = con.prepareCall („{call databaseFunction (args)}”);
Niektóre usługi mają metody z oboma zachowaniami.
Moje pytania:
- Czy istnieje problem z wywoływaniem funkcji baz danych bezpośrednio przez aplikacje? Czy nie jest to uważane za złą praktykę? Jaki byłby model architektury mający zastosowanie do takiego projektu?
- Czy jest jakiś problem z mieszaniem zachowań w tej samej usłudze? Takie jak transakcje i spójność?
- Czy w przypadku konserwacji enkapsulacja sprawia, że programiście nie jest w stanie zmienić funkcji w bazie danych? Jak tego uniknąć?
- Czy ten scenariusz zdarza się w innych aplikacjach na całym świecie, czy był to tylko błąd architektoniczny?