Глибоко про Звʼязки між Сутностями в Hibernate. Приклади @OneToOne + @ManyToMany

👉 Приєднуйся до Bobocode Community: www.bobocode.com/
__________________________________________
Patreon: / bobocode
GitHub: github.com/bobocode-projects
Telegram: t.me/bobocode​
LinkedIn: bit.ly/2RWPQF5
Twitter: bit.ly/3vaQiOl
Тарас в LinkedIn: bit.ly/2ElWg8J
Тарас в Twitter: bit.ly/33Pmuwg
__________________________________________
28-те заняття тренувальної програми Ultimate Enterprise Java (2021).
УВАГА! Відеозапис не містить активної частини заняття.
00:00 Нарізка основних моментів
03:20 Початок
03:34 One to Many
05:31 One to One
09:31 Класичний @OneToOne мапінг
15:51 One to One з спільним PK
16:31 Мапінг @OneToOne + @MapsId 🔥
25:20 Many to Many
28:48 Мапінг @ManyToMany + @JoinTable
41:49 Self-joining One To Many
42:12 Self-joining Many To Many
47:04 ЯК ПРАВИЛЬНО ВИТЯГУВАТИ ДАНІ? 🤔
54:58 N+1 Select problem
01:00:03 Як вирішити проблему з N+1?
01:03:36 На що впливає "optional=false"?
01:06:40 Eager, який спричиняє N+1 😱
#opensource #java #education

Пікірлер: 15

  • @Bobocode
    @Bobocode Жыл бұрын

    👉 Навчання від Bobocode: bit.ly/3IRrJhj

  • @vidy.official
    @vidy.official28 күн бұрын

    19:55 - цікаве зауваження. Хочу додати, що boolean - це тип з бінарним значенням і, відповідно, логіка також має бути бінарною. Тобто, якшо змінну не засетали, то обовʼязково має бути якесь дефолтне значення (false або true), якщо ж при значенні null зʼявляється третій варіант розвитку подій, то використання boolean в даному випадку - це вже наслідок невдалого дизайну.

  • @trnrvl
    @trnrvl Жыл бұрын

    Класне відео! Радий що знімаєте ! Не зупиняйтесь (шукав українсько-мовний контент по java дуже довго)

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Хто шукає, той знаходить! :)

  • @GT-cv3xu
    @GT-cv3xu2 ай бұрын

  • @antonignatenko7776
    @antonignatenko7776 Жыл бұрын

    я вроде понимал до просмотра релешейны между ентити но mapped by join table и лейзи выгрузка все это вводило вступо был хаос, сейчас у меня уже немного опыта появилось и очень хорошее объяснение так что все стало на свои места супер как всегда сапсибо

  • @user-pf4hv1jw6n
    @user-pf4hv1jw6n Жыл бұрын

    топові відео по інформаційному наповненню

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Дякую за ваші коментарі! 😉

  • @TomSawyerDJ
    @TomSawyerDJ Жыл бұрын

    Привіт, а що за плагін використовувався в уроці, який підсвічував клас User який потребував конструктор чи мапінг?

  • @Bobocode

    @Bobocode

    Жыл бұрын

    plugins.jetbrains.com/plugin/15075-jpa-buddy

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Жыл бұрын

    Правильно ли я понимаю, что если есть две сущности со связью "Один ко многим", например Сотрудник и ТелефоныСотрудника. То получать на сервере такие данные нужно в DTO одним вызовом, но двумя отдельными json? И записывать поочередно: сначала сотрудника, получить ID от сохраненного сотрудника, и потом записываем телефоны используя этот ID для связи.

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Та ні, можна робити по-різні, в тому числі одним JSON. Якщо ви добре розумієте, як працює Hibernate, то можна зробити все, що хочеш 😅

  • @user-ie2zp2kr8o
    @user-ie2zp2kr8o Жыл бұрын

    Привіт, дуже дякую за україномовний контент! В тебе гарно виходить! Підкажіть будь ласка, як бути в такій ситуації коли self-join , в entity є parent, і в parent є свій grandparent, мапінг стоїть @OneToOne, як витягнути для child всі parent за допомогою left join fetch? Чи взагалі так можливо, якщо ні то як обходити n+1 в даному випадку?

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Ви можете робити безліч join fetch для звʼязків toOne і тільки один join fetch для звʼязку toMany. Якщо не підходить робити join fetch, то щоб зменшити кількість запитів, ви також можете викориcтовувати Batch Fetching docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#fetching-batch

Келесі