Obiekty DTO i mapowanie

0

Tworzę sobie prosty sklep online. Zastanawiam się czy prawidłowym podejściem będzie wdrożenie klas DTO i ograniczyć używania encji bazodanowych w kontrolerze? np. przy rejestracji Użyć klasę UserDto.. Jak jest prawidłowe podejście do mapowanie przy relacji many to many ?

0

Tak, będzie to prawidłowe podejście, bo klasa, która ma służyc za model/widok do komunikacji ze światem zewnętrznym, a encja to różne odpowiedzialności i powody do zmian. Tak samo przy rejestracji czy ogólnie przyjmowania danych ze światem zewnętrznym - DTO. Tym bardziej, że podczas rejestracji jeżeli kontroler będzie przyjmował dane to pewnie część pól bedzie nullem, które w encji nullami być nie powinny - zostaną ustawione dopiero za kontrolerem. Można wtedy zrobić np. NewUserDto i po samej nazwie widać, do czego ta klasa bedzie wykorzystwana.

0

Ja stworzyłbym 3 wersje klasy:

  • DTO z surowymi typami (String, int, itd) do RESTa
  • encje bazodanowe do mapowania 1:1 z tabelami w bazie
  • klasy biznesowe mocno otypowane, a więc np zamiast "String accountName;" lepiej wrzucić "AccountName accountName;"

DAO zamienia encje bazodanowe na klasy biznesowe i vice versa. Podobnie do DTO są osobne konwertery tak by logika biznesowa nie musiała nic wiedzieć o DTO.

Przy czym nie używałem nigdy Hibernate'a (czy czegokolwiek tego typu) i nie zamierzam. Do obsługi bazy wykorzystuję biblioteki typu https://www.jooq.org/ ale Scalowe (konkretnie to Slick: http://slick.lightbend.com/

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