Melhor prática para calcular um atributo no projeto Jhipster
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:
- Na visão de sua classe angular, ao mostrar seu componente Race, você pode trazer dados e calculá-los cada vez que forem mostrados.
- Em algum lugar na implementação do Race Service.
- 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
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 @Transient
getter no Race
modelo 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.