MapStruct - czy tego się używa?

0

W ogóle czy DTO jest OK? bo na stack overflol kłócą się niektórzy, że to anty pattern...
Dla mnie to DTO to jest jakas patologia, żeby przepisywać po 20 razy to samo.

1

problem ze wzorcami jest taki, że przestały być wzorcami (spostrzeżeniem, że czasem tak robimy i warto to nazwać, np łączenie desek na jaskółcze pióro - wzorzec stolarzy - ale nie wszystkie deski we wszechświecie są na pióro) a stały się religią

1

W kilku projektach korzystałem z MapStructa i sprawdzał się całkiem dobrze (możesz go spiąć ze springiem i konwerter jest dostępny jako bean). Inny team też sobie to wdrożył i nie słyszałem żeby gdzieś z nim utknęli czy na coś narzekali.
Jeśli korzystasz ze Springa i nie chcesz się bawić z DTO to możesz też **wypychać ** encję przez RESTa + dorobić do tego projekcję (interfejs z getterami dla pól jakich wymagasz w odpowiedzi) i nie musisz się bać że zwrócisz dane których nie powinieneś. Masz wybór, ale jeśli chodzi o przyjmowanie danych to jakieś DTO i tak pewnie będziesz musiał sobie zbudować (chyba, że masz zamiar pakować dane bezpośrednio do pojo swojej encji ;) ) + jakąś translację DTO->encja, więc taki MS jest po prostu wygodny (ale nikt nie broni Ci pisać ich ręcznie)

1
  1. MapStruct to rak. Ktoś kiedyś wrzucił to do projektu w pracy i więcej z tym problemów niż pożytku
  2. Co od samych DTO to nie bardzo rozumiem o co pytasz. DTO na zasadzie struktury danych którą wypychasz sobie przez RESTa albo przyjmujesz z RESTa są ok. Antywzorcem jest co najwyżej źonglowanie takimi strukturami danych później w warstwie logiki aplikacji, zamiast przepisać to na jakieś obiekty domenowe. Bo potem robi sie z tego takie klasyczne programowanie strukturalne gdzie masz "klasy" które są tylko namespace dla funkcji (często pod przykrywką serwisu) i osobno masz dane.
1

Z moich doświadczeń raczej można sobie odpuścić. Proste przypadki typu mapowanie pól (najlepiej identycznie nazwanych) 1 do 1 załatwia może i szybko. Jednak jeśli tylko w grę wchodzi jakaś minimalna logika, to mapstruct potrafi być bardzo uciążliwy i człowiek dochodzi do wniosku, że szybciej by to wszystko napisał z ręki. No i absolutnym hitem jest opcja expression=java(tutaj wpisz kod java jako string), zwłaszcza, gdy ktoś w projekcie faktycznie postanowi jej użyć :)

2

DTO przydają się przy przesyłaniu danych między modułami, które nie powinny znać swoich wnętrz nawzajem.

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