Лучшая практика для расчета атрибута в дизайне Jhipster

Давайте представим, что вы создаете гоночное приложение Jhipster, в котором у нас есть класс Race (id, raceName, date, List -Participant-, AverageTime), который состоит из объектов Participant (имеющих идентификатор и время гонки в секундах для каждой гонки). Вы хотели бы рассчитать среднее время гоночного класса, когда время объявляется (когда они пересекают финишную черту) и каждый раз, когда проводится консультация по гонке. Для этого, где бы вы поместили метод для расчета такого среднего?

Я вижу 3 варианта:

  1. В представлении вашего углового класса, когда вы показываете свой компонент Race, вы можете вводить данные и вычислять их каждый раз, когда они отображаются.
  2. Где-то в реализации Race Service.
  3. В модели предметной области с @Transient при создании экземпляра объекта Race

Пожалуйста, если вы видите другие варианты или лучшие практики, дайте мне знать. Спасибо

сущность Race { raceName String, время Мгновенное, среднее время Double }

Участник организации { RacingTime Integer }

отношение OneToMany {Раса{участник(идентификатор)} к Участник {раса (идентификатор)} }

// НАСТРОЙКА ОПЦИИ РАЗБИВКИ: разбить все страницы с нумерацией страниц // разбить на страницы ChatMessage с бесконечной прокруткой // разбить все на страницы с помощью бесконечной прокрутки

// УСТАНОВИТЬ ОПЦИИ СЛУЖБЫ: обслуживать все с помощью serviceImpl //обслуживать все с классом обслуживания

// DTO: dto all с mapstruct

// ФИЛЬТРАЦИЯ: фильтр *

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
0
199
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предпочитаю делать это на сервисном уровне как часть преобразования модели предметной области в DTO. Вы можете реализовать геттер @Transient в модели домена Race, который вычисляет среднее значение, и (я думаю) mapstruct может сопоставить это с DTO. Или вы можете просто установить дополнительное поле DTO в методах обслуживания. Также есть это, где вы можете поместить расчет в свой маппер.

Спасибо, Хоупи. Вы имеете в виду здесь: (github.com/Tonterias/mapstruct/blob/…) если вы можете сказать мне, где, я буду признателен. еще раз спасибо

Jorge M. Nures 17.12.2020 11:09

Надеюсь, представьте, что я не использую MapStruct и DTO. Где бы вы разместили его тогда? Еще раз спасибо.

Jorge M. Nures 17.12.2020 13:50

@ JorgeM.Nures, да, именно здесь я бы это сделал. Вам нужно будет добавить его везде, где вы хотите, чтобы он был в DTO (возможно, также save и findOne). Если вы не используете DTO/сервисы, то, я думаю, вам нужно это переходное поле в вашей сущности и либо заполнить его до того, как оно будет преобразовано в JSON, либо вычислить его на лету в геттере, и, надеюсь, Джексон поместит его в JSON.

Hopey One 17.12.2020 21:31

Привет @Hopey One, я пытался понять, как это сделать, но, думаю, я понятия не имею, как работать с этими DTO в Jhipster, и я не смог найти ни одного примера того, как это сделать. Вы не могли бы мне помочь? Спасибо

Jorge M. Nures 19.12.2020 12:55

Я нашел отличный учебник здесь: stackabuse.com/…

Jorge M. Nures 23.12.2020 18:09

Другие вопросы по теме