Melhor prática para calcular um atributo no projeto Jhipster

Dec 17 2020

Vamos imaginar que você crie um aplicativo de corrida Jhipster onde temos uma classe Race (id, raceName, date, List -Participant-, averageTime) que é feita de objetos Participant (que têm um id e um tempo de corrida em segundos para cada corrida). Você gostaria de calcular o tempo médio da classe de corrida conforme os tempos são divulgados (conforme eles cruzam a linha de chegada) e toda vez que uma corrida é consultada. Para isso, onde você colocaria o método de cálculo dessa média?

Vejo 3 opções:

  1. Na visão de sua classe angular, ao mostrar seu componente Race, você pode trazer dados e calculá-los cada vez que forem mostrados.
  2. Em algum lugar na implementação do Race Service.
  3. No modelo de domínio com um @Transient quando o objeto Race é instanciado

Por favor, se você vir outras opções ou uma prática recomendada, me avise. Obrigado

entidade Race {raceName String, time Instant, averageTime Double}

entidade participante {racingTime Integer}

relacionamento OneToMany {corrida {participante (id)} para participante {corrida (id)}}

// DEFINIR OPÇÕES DE PAGINAÇÃO: paginar tudo com paginação // paginar ChatMessage com rolagem infinita // paginar tudo com rolagem infinita

// SET SERVICE OPTIONS: service all with serviceImpl // service all with serviceClass

// DTO: dto all with mapstruct

// FILTRAGEM: filtro *

Respostas

3 HopeyOne Dec 17 2020 at 06:55

Minha preferência é fazer isso na camada de serviço como parte da conversão do modelo de domínio para DTO. Você poderia implementar um @Transientgetter no Racemodelo de domínio que calcula a média e (eu acho) mapstruct poderia mapear isso para o DTO. Ou você pode apenas definir o campo DTO extra em seu (s) método (s) de serviço. Também há aqui onde você pode colocar o cálculo em seu mapeador.