Dto ? ????????????

 
 
 
Сообщения:10
В настоящее время большая часть Dto, как и большая часть аннотаций валидации, расположены в jcommune-web-controller. Проблема заключается в том, что в некоторых случаях нам хотелось бы проводить валидацию полей и использовать эти Dto в слое сервисов (jcommune-service), что становится особо актуальным с введением плагинов. Поэтому предлагается перенести Dto и аннотации для валидации в слой сервисов. Если рассмотреть в качестве примера плагин регистрации, то это позволит нам проводить в одном месте валидацию полей и саму регистрацию, либо с помощью плагина, либо с помощью регистрации по умолчанию (JCommune), в виде единой операции.

Выслушаю ваши замечания, предложения.
 
 
Сообщения:365
А что будешь делать с полями типа
    private String passwordConfirm;

    @Captcha(message = "{validation.captcha.wrong}")
    private String captcha;
Это RegisterUserDto
Изменен:02 авг 2013 16:17
 
 
Сообщения:10
Что касается валидации через рест сервис, то пока эти поля не используются, что касается валидации по умолчанию, то она будет проходить как и раньше.
Изменен:02 авг 2013 16:38
 
 
Сообщения:365
Да, но выходит в сервисах будут скопляться ненужные и неизвестные ему поля. Можно как вариант сделать:
BasicRegistrationDto {
  String username;
  String email;
  String password;
 ...
}
WebRegistrationDto {
  @Valid
  BasicRegistrationDto basicRegistration;
  String captcha;
  ...
}
Кто что скажет? jk1, примешь участие в обсуждении?
 
 
Сообщения:20
Я бы придерживался следующих принципов относительно DTO:

1. Не смешиваем DTO для плагинов и DTO, использующееся в самом форуме, для spring mvc например. Это делается для стабильности и совместимости API плагинов, ведь их основная идея в том, что плагины пишет не только команда разработчиков JTalks. При изменении API мы теряем совместимость со сторонними плагинами, которая может уже никогда и не восстановиться.
2. Все DTO для плагинов живут в model, потому как эти DTO описывают предметную область происходящего с точки зрения плагина. Опять же, JSR-303 аннотации на DTO - бизнес-правила и ограничения на передаваемые данные. Еще одним аргументом в пользу этого подхода является то, что классы модели часто используются наравне с DTO, то есть мы приходим к унифицированному подходу при размещении и использовании любых value objects.
3. DTO для плагинов меняются только в крайнем случае. Для расширения функциональности лучше наклепать дополнительный интерфейс для плагинов.

З.Ы. Фича с уведомлением на почту об упоминании твоего ника на форуме - клевая штука
 
 
Сообщения:365
Я правильно понимаю, что ты предлагаешь то же, что и я, только DTO поместить в модель? Как это будет выглядеть?
 
 
Сообщения:20
ctapobep:
Я правильно понимаю, что ты предлагаешь то же, что и я, только DTO поместить в модель?


Да

ctapobep:
Как это будет выглядеть?


Очень просто. Рядом с пакетом model будет пакет dto. Если задуматься, то это эти сущности выполняют весьма схожие функции, только одни персистентны, а другие нет.
DTO для плагинов я бы положил отдельно в пределах того же model, чтобы не путаться.
 
 
Сообщения:365
Давайте так и попробуем, sptp, у тебя есть вопросы/возражения?
 
 
Сообщения:10
Я так понимаю мы сейчас говорим про размещение всех Dto (включая RegisterUserDto), а не только Dto плагинов, в пакете model?
 
 
Сообщения:365
По мере надобности, переносить все одним махом не надо.
 
 
Сообщения:10
Тогда, на настоящий момент, в model выносим RegisterUserDao и всю необходимую ему валидацию.
 
 
Сообщения:365
Только сделай как я написал выше, плагину не нужны лишние веб-ориентированные поля, раздели их лучше на два класса.
 
Модераторы:katctapobepІраїдаJulia AtlyginaJulik21Julikdsafjifb
Сейчас эту тему просматривают:Нет