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, чтобы исправить ошибку переполнения стека из-за бесконечной рекурсии парсинга джексона
А зачем руками создавать таблицы в базе данных? хибернейт же может всё это сделать по моделям если важно флайвэй использовать то потом по готовым таблицам можно скрипты получить
Если это новый проект, можно делать как угодно, только нужно убедиться, что хибернейт создаст все 'корректно'. Если уже существующий, то через скрипт, потому как нужно указывать только последние изменения.
Очень сложно пояснить через написание комментария, лучше все таки прочесть отдельную статья про 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 Надеюсь хоть немного смог помочь и внести ясность.
Ответь пожауйлста , допустим я создал userDTO и в нем есть id ,name но нету password таким образом я скрыл пароль при получений пользователя тоесть get запрос .. но что если я наоборот создаю пользователя через этот же DTO но там нету password параметра как быть ? тоесть мне нужно создать еще один dto класс чтобы там было это поле ?
Привет, если хочешь "скрыть" поле, можно просто его игнорировать при маппинге entity в dto Так же можно использовать projection, чтобы доставать не всю entity из БД, а лишь те поля, которые нужны + если говорить конкретно про пароль, про сохранение user-а и его извлечении, то тут лучше разобраться, как работает spring security
@@followthewhiterabbit6924 Спасибо , сделал вот так вот и вроде работает @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private String password;
Спасибо за урок! Подскажите (может я не все понял) как реализуется возможность, что бы Юзер имел несколько ролей, если связ реализуется через промежуточную таблицу, где указывается связь 1 пользователь к 1 роли?
В этой же таблице где юзеру 1 присвоена роль 1, можно второй строкой этому же юзеру 1 присвоить роль 2. То есть с текущим числом ролей (3 роли), максимум три раза (в трех строчках) будет встречаться один и тот де id юзера в первой колонке таблицы users_roles
@@igorvasylevskyi3629 Вообще нет ) Но это можно включить добавив "свойство" hibernate.hbm2ddl.auto:create. На начальном этапе это может сгодиться, пока нет реальных данных, но лучше сразу все делать как надо )
Для тек, кто дает инфу, и не дает сорцы, в аду отдельный котел!
Хахаха )
В августе должен выйти платный курс, там будет вся информация )
@@followthewhiterabbit6924 привет, вышел платный курс ? где его найти?
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, чтобы исправить ошибку переполнения стека из-за бесконечной рекурсии парсинга джексона
Спасибо!)
21:24 все таки DTO для других целей
бесконечная рекурсия парсинга другими средствами решается
если я не ошибаюсь
Круто, спасибо! Полезная информация, мало где можно найти реально полезную инфу по написанию приложений. Однозначно лайк+подписка)!!!
А зачем руками создавать таблицы в базе данных?
хибернейт же может всё это сделать по моделям
если важно флайвэй использовать то потом по готовым таблицам можно скрипты получить
Если это новый проект, можно делать как угодно, только нужно убедиться, что хибернейт создаст все 'корректно'.
Если уже существующий, то через скрипт, потому как нужно указывать только последние изменения.
Меня накрыло после DTO и его смысл) только видел что она циклом выдал.
Код пишешь славно, но пояснения не хватает, очень.
Объясните пожайлуста строку
role.stream().map(role1 -> toDTO(role1)).collect(Collectors.toSet());
Очень сложно пояснить через написание комментария, лучше все таки прочесть отдельную статья про 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
Надеюсь хоть немного смог помочь и внести ясность.
Ответь пожауйлста , допустим я создал userDTO и в нем есть id ,name но нету password таким образом я скрыл пароль при получений пользователя тоесть get запрос .. но что если я наоборот создаю пользователя через этот же DTO но там нету password параметра как быть ? тоесть мне нужно создать еще один dto класс чтобы там было это поле ?
Привет, если хочешь "скрыть" поле, можно просто его игнорировать при маппинге entity в dto
Так же можно использовать projection, чтобы доставать не всю entity из БД, а лишь те поля, которые нужны
+ если говорить конкретно про пароль, про сохранение user-а и его извлечении, то тут лучше разобраться, как работает spring security
@@followthewhiterabbit6924 Спасибо , сделал вот так вот и вроде работает @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
Спасибо за урок!
Подскажите (может я не все понял) как реализуется возможность, что бы Юзер имел несколько ролей, если связ реализуется через промежуточную таблицу, где указывается связь 1 пользователь к 1 роли?
В этой же таблице где юзеру 1 присвоена роль 1, можно второй строкой этому же юзеру 1 присвоить роль 2.
То есть с текущим числом ролей (3 роли), максимум три раза (в трех строчках) будет встречаться один и тот де id юзера в первой колонке таблицы users_roles
Спасибо за то, что вы делаете!
Пожалуйста )
Я с тебя ахреневаю.. Респект. Жму руку!
Взаимно )
@@followthewhiterabbit6924 а hibernate разве не автоматически создет таблицы и связи между ними?
@@igorvasylevskyi3629 Вообще нет ) Но это можно включить добавив "свойство" hibernate.hbm2ddl.auto:create.
На начальном этапе это может сгодиться, пока нет реальных данных, но лучше сразу все делать как надо )
@@followthewhiterabbit6924 Ну я так и делал, спасибо
Очень круто! Спасибо!
И Вам спасибо!)
худший ваш урок
почему?
@JsonManagedReference
@JsonBackReference