Робота з ORM: JPA та Hibernate
Як ви вже знаєте, Object-Relational Mapping (ORM) — це технологія, яка дозволяє розробникам взаємодіяти з базою даних на рівні об'єктів, а не через SQL-запити.
По суті, ORM — це концепція, яка дозволяє Java-об'єкту бути представленим як дані у базі даних (і навпаки). Вона реалізується у вигляді специфікації Java Persistence API (JPA).
JPA
Приклад із реального життя
Уявіть, що JPA — це як стандарт для електричних розеток у різних країнах. Цей стандарт визначає, як повинна виглядати розетка та яким вимогам вона має відповідати, щоб до неї можна було підключати пристрої.
Однак сам стандарт не виробляє розетки. Щоб ними користуватися, потрібні виробники, які реалізують цей стандарт. Вони створюють справжні розетки, що відповідають стандарту.
Основні компоненти JPA
Компоненти JPA — це ключові елементи, які працюють разом, щоб забезпечити функціональність для взаємодії з базою даних.
Ми розглянемо ці компоненти на реальних прикладах, щоб допомогти вам краще асоціювати їх для майбутнього використання.
Сутність
Згадаймо, що таке сутність. Сутність — це клас у вашому коді, який відповідає таблиці в базі даних. Наприклад, клас User описує, які дані про користувача ми зберігаємо.
Уявіть це як візитну картку. Картка містить ім'я людини, посаду та контактну інформацію. У JPA клас сутності описує всі важливі характеристики об'єкта, так само як візитна картка описує людину.
EntityManager
У JPA EntityManager виконує операції такі як додавання, оновлення або видалення записів, керуючи всіма цими діями.
EntityManager відповідає за керування життєвим циклом сутностей (об'єктів) та їх взаємодією з базою даних.
Основні методи
Як використовувати EntityManager у Spring Boot
Контекст збереження
Життєвий цикл сутностей
- Transient: Сутність щойно створена, але ще не збережена у базі даних;
- Managed: Сутність вже збережена у базі даних і керується
EntityManager. Усі зміни автоматично відстежуються; - Detached: Сутність раніше була керованою, але контекст збереження було закрито або
EntityManagerбуло очищено. Зміни у цьому стані не відстежуються автоматично; - Removed: Сутність позначена для видалення з бази даних.
Коли EntityManager створює або знаходить сутність, він розміщує цю сутність у контексті збереження.
Усі зміни, внесені до керованої сутності, автоматично відстежуються, і після завершення транзакції ці зміни синхронізуються з базою даних.
JPQL (Java Persistence Query Language)
У JPQL використовується об'єктно-орієнтований підхід для написання запитів з метою пошуку або зміни даних у базі даних.
SELECT c from Category c WHERE c.title = 'query'
У JPQL ми не працюємо безпосередньо з іменами таблиць та стовпців. Натомість ми звертаємося до класу Category та його поля title, що робить запит зрозумілішим для Java-розробників. JPQL абстрагує підлеглу структуру бази даних, дозволяючи зосередитися на об'єктно-орієнтованій моделі.
Hibernate
Наприклад, Hibernate може автоматично генерувати та оновлювати таблиці бази даних на основі ваших сутностей (класів).
Hibernate містить механізми кешування, які дозволяють часто використовуваним даним зберігатися в пам'яті, зменшуючи кількість запитів до бази даних та прискорюючи роботу застосунку.
1. Що таке JPA?
2. Який інтерфейс у JPA використовується для виконання операцій над сутностями?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
What are the main differences between JPA and Hibernate?
Can you explain more about how the EntityManager works?
How does JPQL differ from regular SQL?
Awesome!
Completion rate improved to 3.45
Робота з ORM: JPA та Hibernate
Свайпніть щоб показати меню
Як ви вже знаєте, Object-Relational Mapping (ORM) — це технологія, яка дозволяє розробникам взаємодіяти з базою даних на рівні об'єктів, а не через SQL-запити.
По суті, ORM — це концепція, яка дозволяє Java-об'єкту бути представленим як дані у базі даних (і навпаки). Вона реалізується у вигляді специфікації Java Persistence API (JPA).
JPA
Приклад із реального життя
Уявіть, що JPA — це як стандарт для електричних розеток у різних країнах. Цей стандарт визначає, як повинна виглядати розетка та яким вимогам вона має відповідати, щоб до неї можна було підключати пристрої.
Однак сам стандарт не виробляє розетки. Щоб ними користуватися, потрібні виробники, які реалізують цей стандарт. Вони створюють справжні розетки, що відповідають стандарту.
Основні компоненти JPA
Компоненти JPA — це ключові елементи, які працюють разом, щоб забезпечити функціональність для взаємодії з базою даних.
Ми розглянемо ці компоненти на реальних прикладах, щоб допомогти вам краще асоціювати їх для майбутнього використання.
Сутність
Згадаймо, що таке сутність. Сутність — це клас у вашому коді, який відповідає таблиці в базі даних. Наприклад, клас User описує, які дані про користувача ми зберігаємо.
Уявіть це як візитну картку. Картка містить ім'я людини, посаду та контактну інформацію. У JPA клас сутності описує всі важливі характеристики об'єкта, так само як візитна картка описує людину.
EntityManager
У JPA EntityManager виконує операції такі як додавання, оновлення або видалення записів, керуючи всіма цими діями.
EntityManager відповідає за керування життєвим циклом сутностей (об'єктів) та їх взаємодією з базою даних.
Основні методи
Як використовувати EntityManager у Spring Boot
Контекст збереження
Життєвий цикл сутностей
- Transient: Сутність щойно створена, але ще не збережена у базі даних;
- Managed: Сутність вже збережена у базі даних і керується
EntityManager. Усі зміни автоматично відстежуються; - Detached: Сутність раніше була керованою, але контекст збереження було закрито або
EntityManagerбуло очищено. Зміни у цьому стані не відстежуються автоматично; - Removed: Сутність позначена для видалення з бази даних.
Коли EntityManager створює або знаходить сутність, він розміщує цю сутність у контексті збереження.
Усі зміни, внесені до керованої сутності, автоматично відстежуються, і після завершення транзакції ці зміни синхронізуються з базою даних.
JPQL (Java Persistence Query Language)
У JPQL використовується об'єктно-орієнтований підхід для написання запитів з метою пошуку або зміни даних у базі даних.
SELECT c from Category c WHERE c.title = 'query'
У JPQL ми не працюємо безпосередньо з іменами таблиць та стовпців. Натомість ми звертаємося до класу Category та його поля title, що робить запит зрозумілішим для Java-розробників. JPQL абстрагує підлеглу структуру бази даних, дозволяючи зосередитися на об'єктно-орієнтованій моделі.
Hibernate
Наприклад, Hibernate може автоматично генерувати та оновлювати таблиці бази даних на основі ваших сутностей (класів).
Hibernate містить механізми кешування, які дозволяють часто використовуваним даним зберігатися в пам'яті, зменшуючи кількість запитів до бази даних та прискорюючи роботу застосунку.
1. Що таке JPA?
2. Який інтерфейс у JPA використовується для виконання операцій над сутностями?
Дякуємо за ваш відгук!