Bawię się architekturą hexagonalną, cqrs i mam dwie wątpliwości.
1 czy encję można uznać za model domenowy? mapowanie trzymam w xmlu na poziomie infrastruktury, sama encja nie ma pojęcia, że jest mapowana pod spodem. Jedynie do czego mogę się przyczepić, to wymóg posiadania id przez encję, co trochę się kłóci z modelem domenowym, tak mi się wydaje.
2 do czego tak na prawdę służą projekcję? obecnie spotkałem się z wykorzystaniem ich do budowy viewObiectów i zwracania ich. Mógłbym prosić jakiś przykład?
3 czy budując widok w warstwie aplikacji, tworzymy osobne interfejsy które będą implementowane w warstwie infrastruktury ?
Przykłąd
klasa user jako obiekt domenowy. Potrzebujemy wyciągnąć obiekt z bazy danych. Więc w warstwie aplikacji tworzymy obiekt widoku który będzie zwracany w repozytorium. O co mi chodzi, o to czy chcąć pobrać jakieś dane o użytkowniku powinniśmy tworzyć niezależną klasę w warstwie infrastruktury od klasy która np dodaj użytkowników do bazy ? Czy wszystko można władować np w klasę user. Wtedy będzie ona odpowiedzialna za dodaawanie, pobieranie danych itd. Takie repozytorium
infra:
doctrine:
orm:
user implements UserWrite
{pfunction: add, update etc}
dbal
userViewDbal implements userQuery - z warstwy aplikacji
pfucntion getby... (return new UserView()