Data Transfer Object DTO паттерн зачем?

Поділитися
Вставка
  • Опубліковано 11 вер 2024
  • Data Transfer Object DTO что это

КОМЕНТАРІ • 53

  • @a.kremenec
    @a.kremenec 4 роки тому +24

    Почему нет ни где примеров? Все говорят что это просто, но нет ни у кого примеров.

    • @slavakomarov1
      @slavakomarov1 4 роки тому +8

      Потому что ты "нигде" пишешь раздельно

    • @aks964
      @aks964 4 роки тому +8

      Аналогично, сижу гуглю. Везде ответ формата ну это такая штука которая лежит в промежутке между сущностью и фронтом. Там все изи. А если я скажу что сварные работы это изи, вы тоже все поймете и сможете варить?

    • @rulonoboev2851
      @rulonoboev2851 4 роки тому

      это обычный объект в котором есть свойства(поля), ты подаешь на конструктор значения, которые сетятся эти поля, дальше ты эту дто отправляешь с контроллера на логический слой, где через гетеры вытаскиваются эти свойства и дальше происходит бизнес логика и тп. Все достаточно просто

    • @enable4
      @enable4 3 роки тому +4

      @@rulonoboev2851 а передать параметры объекта из контроллера в сервис не сетя его в одну сущность можно как-то иначе? Это же и получается простой POJO класс, в чём особенность такого подхода? Я просто не догоняю что-то)

  • @AndreySem
    @AndreySem 4 роки тому +12

    Жалко что не затронули использование DTO в REST API - там оно нужно как воздух, чтобы при изменении внутреннего представления данных на сервере у клиентов API ничего не сломалось

  • @aoveden197727
    @aoveden197727 3 роки тому +14

    Допиши видос пожалуйста, простой пример перемещения данных из одной части в другую, с помощью DTO. Не надо расписывать целый проект, просто показать именно это действие, как, что, где писать.

    • @Serega5j
      @Serega5j Рік тому

      Для отсечения лишних данных что приходят из например БД.

  • @ЮрийЗапольский
    @ЮрийЗапольский 2 роки тому +1

    Именно посмотрев ваше видео понял что такое DTO и зачем оно нужно, спасибо) Но желательно было привести простой пример на базе любого фреймворка.

  • @user-tv5rk1fj7o
    @user-tv5rk1fj7o 4 роки тому +14

    Начало вроде по делу, но затем какая-то муть...

    • @livecodingschool8906
      @livecodingschool8906  4 роки тому

      благодарю за обратную связь - был бы рад узнать в чем муть ?

    • @Akan801
      @Akan801 3 роки тому

      @@livecodingschool8906 я думаю сухая теория по сути и есть муть

    • @furrai
      @furrai 3 роки тому +1

      @@livecodingschool8906 Примера не хватает

  • @TheDoartLos
    @TheDoartLos Рік тому +1

    Ну так можно же захардкодить валидацию и массива который мы передаём в функцию. Типа проверка и типов массива и тд. Все равно не понял что за Dto и зачем оно нужно.

  • @juliakorabelska8408
    @juliakorabelska8408 4 роки тому +2

    Спасибо, очень просто и доходчиво!

  • @zalip4129
    @zalip4129 Рік тому +1

    про связь между DTO и массивом вообще ничего не понял

  • @nina_knyazeva
    @nina_knyazeva 2 роки тому

    Супер! Просто и понятно)

  • @rufat85
    @rufat85 4 роки тому

    а по моему просто и доходчиво, лайк!

  • @eugene1207
    @eugene1207 4 роки тому

    Спасибо братик, кратко понятно!

  • @agnar878
    @agnar878 Рік тому

    А валидация данных может быть внутри ДТО? Мы ведь не знаем, что пришло в массиве или реквесте. Как минимум, должна быть проверка на наличие и тип

    • @Serega5j
      @Serega5j Рік тому

      Для валидации входных данных от например фронта используются специальные валидаторы. Это не подходит. Это нужно для отсечения лишних/конфиденциальных данных что приходят например из БД.

    • @diatm1506
      @diatm1506 10 місяців тому

      Да можно с помощью декораторов например в typescripte

    • @agnar878
      @agnar878 10 місяців тому +1

      @@diatm1506 то уже детали. Вопрос был в том, не изменится ли название паттерна, если добавить валидацию

    • @diatm1506
      @diatm1506 10 місяців тому

      @@agnar878 сорян значит я невнимательно прочёл

  • @kl45gp
    @kl45gp 2 роки тому

    идеально обьяснил, а главное быстро

  • @9080artur
    @9080artur 9 місяців тому

    Спасибо!

  • @vadimaksenov7982
    @vadimaksenov7982 3 роки тому +1

    лучше б показал как создавать и использовать

  • @andrew5260
    @andrew5260 3 роки тому

    interesting info thank you!

  • @shdv
    @shdv 3 роки тому

    2:53 - а можно уточнение? А разве методы в объекте - это не логика?

    • @livecodingschool8906
      @livecodingschool8906  3 роки тому

      под методами имею ввиду гетеры и сетеры, под отсутствием логики - имеется ввиду бизнес логика

  • @Incog05
    @Incog05 Рік тому

    Нужно показать пару примеров

  • @SokratForever
    @SokratForever 4 роки тому +3

    А чем DTO отличаеться от Entity?

    • @livecodingschool8906
      @livecodingschool8906  4 роки тому +5

      хороший вопрос! Entity это то что в итоге мы будем хранить в системе. 1 case заполнять данными entity из контроллера не верно так как это может привести к уязвимости - по этой причине часто используют DTO объект между Controllers Services. 2 case - не всегда нам нужны все данные из entity для User Interface и на оборот нам нужны данные из нескольких Entity одновременно для работы какого-то сервиса. т e в наших сервисах мы не всегда (почти никогда) будем работать только с entities - по этой причине часто используется DTO - произвольный набор данных которые нам нужны не зависищей от Entities

    • @SokratForever
      @SokratForever 4 роки тому

      @@livecodingschool8906 понял. Не могу справиться с одним таском. Нужно создать кастомные связи на фреймворке ларавел через несколько таблиц и у таблиц есть промежуточные таблицы. И куча разных параметров типа, если категория имеет нужный нам статус. Средствами пхп делать это не очень ибо объем данных большой. Можешь подсказать как правильно создать такие отношения?

    • @livecodingschool8906
      @livecodingschool8906  4 роки тому

      @@SokratForever здесь подсказать конечно достаточно сложно так много деталей которые не известны. а просто объединить все в один запрос при помощи joins не получается ?

    • @SokratForever
      @SokratForever 4 роки тому

      @@livecodingschool8906не получается нормальный запрос написать.
      Такая схема:
      Brands -> models-> engine_models->engine_model_product->products->group_product->groups
      Мне нужно взять группы.
      Я застрял на продуктах. Написал запрос с несколькими джоинами получаю продукты по каждой модели. То есть, у одной модели (engine_model) несколько продуктов. И я получаю дубликаты этих продуктов. Модели 3 имеет продукты с идентификаторами 7,12,15 и модель 20 имеет продукты с этими же идентификаторами (7, 12, 18). Значит я получу продукты с идентификаторами 7,7,12,12,15,18. Продукты повторяются

    • @livecodingschool8906
      @livecodingschool8906  4 роки тому +1

      продукты с одинаковыми id это одни и те же продукты? тогда можно использовать DISTINCT и дуближа не будет www.w3schools.com/sql/sql_distinct.asp

  • @alexUnion
    @alexUnion 3 роки тому

    Лайк, но многовато заиканий

  • @Console.WriteLine
    @Console.WriteLine Рік тому

    spasibo

  • @igoreksazonov
    @igoreksazonov 4 роки тому

    а можно просто параметром передать объект

  • @TheNofxsss
    @TheNofxsss 4 роки тому +1

    Воду налил лол

  • @valeriyagodlevskaya1497
    @valeriyagodlevskaya1497 3 роки тому

    не понятно, для чего он вообще в каких случаях лучше его использовать(((

    • @livecodingschool8906
      @livecodingschool8906  3 роки тому

      Для того чтобы кучу параметров в методе не передовать

    • @livecodingschool8906
      @livecodingschool8906  3 роки тому

      Передавать только один обьект