Сесія + Кеш. Як працює ядро 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
Такого контенту не було і не буде!
Так глибоко та послідовно ніхто не "копає" по цій темі, а тим паче в україномовному ютюбі
@MrRomanvideo
Жыл бұрын
ну токое, видимо вы Борисова и Ко не смотрели.
@sad-philosopher
Жыл бұрын
@@MrRomanvideo Дивився, але не все. В більшості про нутрощі Spring.
Крутейший контент. Жаль что только один лайк можно поставить. Хочется тыкать-тыкать-тыкать палец вверх.
Не вистачає вступного заняття із розглядом плюсів та мінусів JPA. Різниця роботи з JdbcTemplate і Hibernate. Доречність використання того чи іншого інструмента.
Хочеш дізнатися більше про те, як працюють фреймворки під капотом? Приходь на вебінар Java Магія, або Як працює Reflection API та геренрація байт-коду. 👉Реєструйся за посилання: bit.ly/3OjQWSD
Також незрозуміло як відкриття нової сесії впливає на швидкодію. Чи можна все робити в рамках одної сесії? Коли доречно змінювати сесію?
Окрім вивчення Hibernate ці завдання також змушують закріпити Reflection API.))) Всім рекомендую.
А чи можна подивитися код реалізації повного update? В тому місці, де відбувається порівняння і потім безпосередньо update, який летить в БД. Буду вдячний.
@Bobocode
Жыл бұрын
Ви маєте на увазі як це працює в Hibernate? Він open-source, тому там все, що хочете можна подивитися. Ось репозиторій: github.com/hibernate/hibernate-orm
@Barannnn14
Жыл бұрын
Я його щойно зробив, можу поділитись)
@igorputnik4216
Жыл бұрын
@@Barannnn14 Буду вдячний
в мене при порівнянні данних з різних сесій повертає true, були якісь зміни ?
@Bobocode
4 ай бұрын
При якому саме порівнянні?
@user-io3tu7el1k
4 ай бұрын
@@Bobocode14:01 достаємо в person по першому id, достаємо в theSamePerson теж по першому айді, але в іншій сесії. У вас повертається false. я зробив так само у себе, і у мене повертається true
@Bobocode
3 ай бұрын
Якщо ви порівнювали через "==", то мало би бути false. Проте, може у вас, наприклад, ввімкнений кеш 2-го рівня, або ще щось. Тому треба дивитися ваш код, щоб точно сказати.
@user-io3tu7el1k
3 ай бұрын
дякую@@Bobocode
Може мені хтось роз'яснити тонкощі... Ось ми робимо запит, отримуємо Ентіті, закриваємо сесію, перетворюємо Ентіті у ДТО та передаємо її далі. А що робити коли ця ДТО вернеться зміненою і нам требу буде оновити Ентіті? Вона вже детач як мінімум, а то і не існує зовсім. В мене є User який містить List, а той вже містить List. Всі ці Ентіті, звісно, мають додаткові таблиці для зв'язку OneToMany. І от коли я просто перетворюю User на ДТО, а потім назад ДТО в Ентіті - Hibernate видаляє усі записи у таблицях зв'язків та записує в них дані по новому, навіть якщо я нічого не міняв. То як бути? Що саме потрібно, щоб не робити такої дурості, як постійний перезапис даних?
@Bobocode
Ай бұрын
Якщо коротко, то вчити, як працює Hibernate 😅