Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Робота з ORM: JPA та Hibernate | Робота з Базами Даних
Spring Boot Backend

bookРобота з 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 використовується для виконання операцій над сутностями?

question mark

Що таке JPA?

Select the correct answer

question mark

Який інтерфейс у JPA використовується для виконання операцій над сутностями?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

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

bookРобота з 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 використовується для виконання операцій над сутностями?

question mark

Що таке JPA?

Select the correct answer

question mark

Який інтерфейс у JPA використовується для виконання операцій над сутностями?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 4
some-alt