Основы JPA
JPA задаёт правила, provider выполняет работу
JPA описывает общий API для работы с persistent-объектами: как объявить Entity, как найти или сохранить объект, как описать связи и как выполнять запросы. Конкретную реализацию этих правил предоставляет persistence provider, например Hibernate.
Поэтому код приложения в основном работает с типами jakarta.persistence,
а provider уже преобразует операции над объектами в SQL и взаимодействует с базой данных.
Центральный объект — EntityManager
User user = entityManager.find(User.class, 42L);
if (user != null) {
System.out.println(user.getName());
}
Метод find() ищет Entity по её типу и первичному ключу.
Вместо ручного чтения столбцов из ResultSet приложение получает объект User.
Это не отменяет SQL и реляционную модель — JPA просто берёт значительную часть преобразования между ними и объектами на себя.
JPA работает вокруг persistence context
Полученные и сохранённые Entity обычно существуют внутри специального контекста, который знает, какими объектами сейчас управляет. Благодаря этому JPA может отслеживать изменения и синхронизировать состояние объектов с базой данных в подходящий момент. Подробно этот механизм разберём на отдельной странице.