Najlepsza praktyka obliczania atrybutu w projekcie Jhipster

Dec 17 2020

Wyobraźmy sobie, że tworzysz aplikację wyścigową Jhipster, w której mamy klasę Race (id, raceName, date, List -Participant-, AverageTime), która składa się z obiektów Uczestnika (które mają identyfikator i czas wyścigu w sekundach dla każdego wyścigu). Chciałbyś obliczyć średni czas w klasie wyścigowej, gdy czasy są zwalniane (gdy przekraczają linię mety) i za każdym razem, gdy wyścig jest konsultowany. W tym celu, gdzie umieściłbyś metodę obliczania takiej średniej?

Widzę 3 opcje:

  1. Z punktu widzenia twojej klasy kątowej, kiedy pokazujesz swój komponent Race, możesz przynieść dane i obliczyć je za każdym razem, gdy są wyświetlane.
  2. Gdzieś w implementacji usługi wyścigowej.
  3. W modelu domeny z @Transient, gdy obiekt Race jest instancjonowany

Proszę, jeśli zobaczysz inne opcje lub najlepsze praktyki, daj mi znać. Dzięki

jednostka Rasa {raceName String, time Instant, AverageTime Double}

Uczestnik podmiotu {racingTime Integer}

relacja OneToMany {Race {Participant (id)} to Participant {race (id)}}

// USTAW OPCJE PAGINACJI: paginate all with pagination // paginate ChatMessage with infinite-scroll // paginate all with infinite-scroll

// USTAW OPCJE USŁUG: service all with serviceImpl // service all with serviceClass

// DTO: dto all with mapstruct

// FILTERING: filter *

Odpowiedzi

3 HopeyOne Dec 17 2020 at 06:55

Wolę robić to w warstwie usług w ramach konwersji z modelu domeny do DTO. Możesz zaimplementować @Transientmetodę pobierającą w Racemodelu domeny, która oblicza średnią i (myślę), że mapstruct mógłby mapować to do DTO. Lub możesz po prostu ustawić dodatkowe pole DTO w swoich metodach usług. Jest też to , gdzie można umieścić obliczenia w odwzorowującym.