Java Persistence API (JPA) — это широко используемая спецификация объектно-реляционного сопоставления (ORM) в приложениях Java. Он предоставляет набор классов и методов, которые облегчают взаимодействие между объектами Java и реляционной базой данных. В этой статье мы рассмотрим ключевые классы JPA и их методы для беспрепятственного взаимодействия с базой данных.
- EntityManager:
Класс EntityManager является центральным компонентом JPA и представляет собой соединение с базой данных. Он предоставляет методы для операций CRUD (создание, чтение, обновление, удаление) над сущностями. Вот пример использования EntityManager для сохранения объекта:
EntityManager entityManager = // Obtain entity manager instance
entityManager.getTransaction().begin();
// Create a new entity
Book book = new Book("GPT-3.5 Architecture", "OpenAI");
// Persist the entity
entityManager.persist(book);
entityManager.getTransaction().commit();
- Query:
Класс Query позволяет выполнять запросы к базе данных с использованием JPQL (язык постоянных запросов Java) или собственного SQL. Это позволяет вам извлекать сущности или конкретные данные из базы данных. Вот пример выполнения запроса JPQL:
Query query = entityManager.createQuery("SELECT b FROM Book b WHERE b.author = :author");
query.setParameter("author", "OpenAI");
List<Book> books = query.getResultList();
- CriteriaBuilder и CriteriaQuery.
Классы CriteriaBuilder и CriteriaQuery предоставляют программный способ создания типобезопасных запросов без написания JPQL или собственного SQL. Они позволяют динамически строить запросы на основе критериев и условий. Вот пример:
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Book> criteriaQuery = criteriaBuilder.createQuery(Book.class);
Root<Book> root = criteriaQuery.from(Book.class);
criteriaQuery.select(root).where(criteriaBuilder.equal(root.get("author"), "OpenAI"));
List<Book> books = entityManager.createQuery(criteriaQuery).getResultList();
- TypedQuery:
Интерфейс TypedQuery — это типобезопасная версия интерфейса Query. Он позволяет указать ожидаемый тип результата, устраняя необходимость явного приведения типов. Вот пример:
TypedQuery<Book> typedQuery = entityManager.createQuery("SELECT b FROM Book b WHERE b.author = :author", Book.class);
typedQuery.setParameter("author", "OpenAI");
List<Book> books = typedQuery.getResultList();
- EntityManagerFactory:
Класс EntityManagerFactory представляет собой фабрику для создания экземпляров EntityManager. Обычно он создается один раз во время запуска приложения и используется во всем приложении. Вот пример создания EntityManagerFactory:
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("my-persistence-unit");
EntityManager entityManager = entityManagerFactory.createEntityManager();
В этой статье мы рассмотрели ключевые классы JPA для взаимодействия с базой данных. EntityManager, Query, CriteriaBuilder, CriteriaQuery, TypedQuery и EntityManagerFactory — это важные компоненты JPA, которые позволяют разработчикам выполнять операции CRUD, выполнять запросы и создавать динамические запросы на основе критериев. Используя эти классы и их методы, разработчики могут эффективно управлять базой данных и взаимодействовать с ней в своих приложениях Java.