Сесія + Кеш. Як працює ядро Hibernate? 🔥

👉 Приєднуйся до 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
____________________________________________
25-те заняття тренувальної програми Ultimate Enterprise Java (2021).
УВАГА! Відеозапис не містить активної частини заняття.
00:00 Нарізка основних моментів
04:39 Початок
06:39 Пошук по однаковому id в рамках сесії
08:44 Пошук по однаковому id в різних сесіях
14:39 Пошук через JPQL (HQL) в рамках сесії
17:59 Чому Hibernate відкидає свіжі дані з БД при пошуку ентіті?
21:02 Зміна поля в рамках сесії (UPDATE)
21:45 Зміна поля за рамками сесії
22:51 Видалення в рамках сесії
23:50 Помилка при видалення "Removing a detached instance"
24:55 Як привʼязати існуючу ентіті до сесії? (merge)
27:03 Дивимося javadoc org.hibernate.Session
30:03 Де шукати інформацію про Hibernate?
31:15 Як реалізувати сесію? (Завдання 1)
41:16 🔥 Готове рішення (сесія + кеш)
46:43 Як реалізувати update? (Завдання 2)
#opensource #java #education

Пікірлер: 20

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

    Такого контенту не було і не буде!

  • @sad-philosopher
    @sad-philosopher Жыл бұрын

    Так глибоко та послідовно ніхто не "копає" по цій темі, а тим паче в україномовному ютюбі

  • @MrRomanvideo

    @MrRomanvideo

    Жыл бұрын

    ну токое, видимо вы Борисова и Ко не смотрели.

  • @sad-philosopher

    @sad-philosopher

    Жыл бұрын

    @@MrRomanvideo Дивився, але не все. В більшості про нутрощі Spring.

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

    Крутейший контент. Жаль что только один лайк можно поставить. Хочется тыкать-тыкать-тыкать палец вверх.

  • @user-nq4bt9lm2d
    @user-nq4bt9lm2d11 ай бұрын

    Не вистачає вступного заняття із розглядом плюсів та мінусів JPA. Різниця роботи з JdbcTemplate і Hibernate. Доречність використання того чи іншого інструмента.

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

    Хочеш дізнатися більше про те, як працюють фреймворки під капотом? Приходь на вебінар Java Магія, або Як працює Reflection API та геренрація байт-коду. 👉Реєструйся за посилання: bit.ly/3OjQWSD

  • @user-nq4bt9lm2d
    @user-nq4bt9lm2d11 ай бұрын

    Також незрозуміло як відкриття нової сесії впливає на швидкодію. Чи можна все робити в рамках одної сесії? Коли доречно змінювати сесію?

  • @baibula
    @baibula11 ай бұрын

    Окрім вивчення Hibernate ці завдання також змушують закріпити Reflection API.))) Всім рекомендую.

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

    А чи можна подивитися код реалізації повного update? В тому місці, де відбувається порівняння і потім безпосередньо update, який летить в БД. Буду вдячний.

  • @Bobocode

    @Bobocode

    Жыл бұрын

    Ви маєте на увазі як це працює в Hibernate? Він open-source, тому там все, що хочете можна подивитися. Ось репозиторій: github.com/hibernate/hibernate-orm

  • @Barannnn14

    @Barannnn14

    Жыл бұрын

    Я його щойно зробив, можу поділитись)

  • @igorputnik4216

    @igorputnik4216

    Жыл бұрын

    @@Barannnn14 Буду вдячний

  • @user-io3tu7el1k
    @user-io3tu7el1k4 ай бұрын

    в мене при порівнянні данних з різних сесій повертає true, були якісь зміни ?

  • @Bobocode

    @Bobocode

    4 ай бұрын

    При якому саме порівнянні?

  • @user-io3tu7el1k

    @user-io3tu7el1k

    4 ай бұрын

    ​​@@Bobocode14:01 достаємо в person по першому id, достаємо в theSamePerson теж по першому айді, але в іншій сесії. У вас повертається false. я зробив так само у себе, і у мене повертається true

  • @Bobocode

    @Bobocode

    3 ай бұрын

    Якщо ви порівнювали через "==", то мало би бути false. Проте, може у вас, наприклад, ввімкнений кеш 2-го рівня, або ще щось. Тому треба дивитися ваш код, щоб точно сказати.

  • @user-io3tu7el1k

    @user-io3tu7el1k

    3 ай бұрын

    дякую@@Bobocode

  • @EdwardNorthwind
    @EdwardNorthwindАй бұрын

    Може мені хтось роз'яснити тонкощі... Ось ми робимо запит, отримуємо Ентіті, закриваємо сесію, перетворюємо Ентіті у ДТО та передаємо її далі. А що робити коли ця ДТО вернеться зміненою і нам требу буде оновити Ентіті? Вона вже детач як мінімум, а то і не існує зовсім. В мене є User який містить List, а той вже містить List. Всі ці Ентіті, звісно, мають додаткові таблиці для зв'язку OneToMany. І от коли я просто перетворюю User на ДТО, а потім назад ДТО в Ентіті - Hibernate видаляє усі записи у таблицях зв'язків та записує в них дані по новому, навіть якщо я нічого не міняв. То як бути? Що саме потрібно, щоб не робити такої дурості, як постійний перезапис даних?

  • @Bobocode

    @Bobocode

    Ай бұрын

    Якщо коротко, то вчити, як працює Hibernate 😅

Келесі