6 Hibernate ManyToMany User Roles

Поделиться
HTML-код
  • Опубликовано: 29 сен 2024
  • В этом видео мы рассмотрим аннотацию Hibernate @ManyToMany, создадим таблицу roles и users_roles, свяжем их.
    Создадим DTO и отобразим результат на UI

Комментарии • 32

  • @aks964
    @aks964 4 года назад +2

    Для тек, кто дает инфу, и не дает сорцы, в аду отдельный котел!

    • @followthewhiterabbit6924
      @followthewhiterabbit6924  4 года назад

      Хахаха )
      В августе должен выйти платный курс, там будет вся информация )

    • @АндрейСкворцов-з6ш
      @АндрейСкворцов-з6ш 3 года назад

      @@followthewhiterabbit6924 привет, вышел платный курс ? где его найти?

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Год назад +2

    00:00 Добавление модели Role
    01:54 Связь User и Role как ManyToMany
    08:49 Создание таблицы roles
    11:00 Создание таблицы users_roles для связи ManyToMany
    14:01 Добавление записей в таблицу roles
    15:10 Добавление записей в таблицу users_roles
    16:27 Доработка UserRopository
    17:38 Доработка аннотации @JoinTable
    21:24 Создание UserDTO и RoleDTO, чтобы исправить ошибку переполнения стека из-за бесконечной рекурсии парсинга джексона

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Год назад +1

    21:24 все таки DTO для других целей
    бесконечная рекурсия парсинга другими средствами решается
    если я не ошибаюсь

  • @alexeychernyavsky7775
    @alexeychernyavsky7775 4 года назад +2

    Круто, спасибо! Полезная информация, мало где можно найти реально полезную инфу по написанию приложений. Однозначно лайк+подписка)!!!

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Год назад

    А зачем руками создавать таблицы в базе данных?
    хибернейт же может всё это сделать по моделям
    если важно флайвэй использовать то потом по готовым таблицам можно скрипты получить

    • @followthewhiterabbit6924
      @followthewhiterabbit6924  Год назад

      Если это новый проект, можно делать как угодно, только нужно убедиться, что хибернейт создаст все 'корректно'.
      Если уже существующий, то через скрипт, потому как нужно указывать только последние изменения.

  • @risoutsoring
    @risoutsoring 4 года назад +1

    Меня накрыло после DTO и его смысл) только видел что она циклом выдал.

  • @kraken645
    @kraken645 3 года назад

    Код пишешь славно, но пояснения не хватает, очень.

  • @АльбертАлексеев-ъ4у

    Объясните пожайлуста строку
    role.stream().map(role1 -> toDTO(role1)).collect(Collectors.toSet());

    • @АлександрМоскаленков-з6й
      @АлександрМоскаленков-з6й 4 года назад +8

      Очень сложно пояснить через написание комментария, лучше все таки прочесть отдельную статья про Stream API
      Но есть вкратце
      role.stream().map() - осуществляется поочередный перебор всех значений которые хранятся в Set role, по сути эту сокращенная запись if функции с перебором всех значений находящихся в списке. И то что указанно в скобках (role1 -> toDTO(role1) применяется к каждому элементу массива
      role1 -> toDTO(role1) - берется каждая Role и переводится в RoleDTO с помощью ранее созданной функции toDTO. Это сокращенная запись которую можно было реализовать через функцию:
      SomeMethod (role1 ){
      return toDTO(role1)
      }
      Но автор сделал короче и красивей
      .collect(Collectors.toSet()) - создание из всех новых объектов RoleDTO нового Set
      Надеюсь хоть немного смог помочь и внести ясность.

  • @kanismit5491
    @kanismit5491 4 года назад

    Ответь пожауйлста , допустим я создал userDTO и в нем есть id ,name но нету password таким образом я скрыл пароль при получений пользователя тоесть get запрос .. но что если я наоборот создаю пользователя через этот же DTO но там нету password параметра как быть ? тоесть мне нужно создать еще один dto класс чтобы там было это поле ?

    • @followthewhiterabbit6924
      @followthewhiterabbit6924  4 года назад

      Привет, если хочешь "скрыть" поле, можно просто его игнорировать при маппинге entity в dto
      Так же можно использовать projection, чтобы доставать не всю entity из БД, а лишь те поля, которые нужны
      + если говорить конкретно про пароль, про сохранение user-а и его извлечении, то тут лучше разобраться, как работает spring security

    • @kanismit5491
      @kanismit5491 4 года назад

      @@followthewhiterabbit6924 Спасибо , сделал вот так вот и вроде работает @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
      private String password;

  • @Distalker1
    @Distalker1 4 года назад

    Спасибо за урок!
    Подскажите (может я не все понял) как реализуется возможность, что бы Юзер имел несколько ролей, если связ реализуется через промежуточную таблицу, где указывается связь 1 пользователь к 1 роли?

    • @АлександрМоскаленков-з6й
      @АлександрМоскаленков-з6й 4 года назад +1

      В этой же таблице где юзеру 1 присвоена роль 1, можно второй строкой этому же юзеру 1 присвоить роль 2.
      То есть с текущим числом ролей (3 роли), максимум три раза (в трех строчках) будет встречаться один и тот де id юзера в первой колонке таблицы users_roles

  • @GoPetr
    @GoPetr 5 лет назад +2

    Спасибо за то, что вы делаете!

  • @nikolay-t6497
    @nikolay-t6497 5 лет назад +2

    Я с тебя ахреневаю.. Респект. Жму руку!

    • @followthewhiterabbit6924
      @followthewhiterabbit6924  5 лет назад

      Взаимно )

    • @igorvasylevskyi3629
      @igorvasylevskyi3629 5 лет назад

      @@followthewhiterabbit6924 а hibernate разве не автоматически создет таблицы и связи между ними?

    • @followthewhiterabbit6924
      @followthewhiterabbit6924  5 лет назад

      @@igorvasylevskyi3629 Вообще нет ) Но это можно включить добавив "свойство" hibernate.hbm2ddl.auto:create.
      На начальном этапе это может сгодиться, пока нет реальных данных, но лучше сразу все делать как надо )

    • @igorvasylevskyi3629
      @igorvasylevskyi3629 5 лет назад

      @@followthewhiterabbit6924 Ну я так и делал, спасибо

  • @olehyurchuk2757
    @olehyurchuk2757 5 лет назад +1

    Очень круто! Спасибо!

  • @MrStealth232
    @MrStealth232 3 года назад +1

    худший ваш урок

  • @petrucaraman4791
    @petrucaraman4791 2 года назад

    @JsonManagedReference
    @JsonBackReference