1. Обзор
В этом руководстве мы реализуем простую конфигурацию Spring для системы Spring Data JPA с несколькими базами данных.
2. Сущности
Во-первых, давайте создадим две простые сущности, каждая из которых будет жить в отдельной базе данных.
В этом руководстве мы увидим, как использовать запросы JPA и Hibernate, а также разницу между запросами Criteria, JPQL и HQL. Критериальные запросы позволяют пользователю писать запросы без использования необработанного SQL. Наряду с запросами Criteria мы рассмотрим написание именованных запросов Hibernate и способы использования аннотации @Query
в Spring Data JPA.
Прежде чем мы углубимся в это, мы должны отметить, что Hibernate Criteria API устарел, начиная с Hibernate 5.2. Поэтому в наших примерах мы будем использовать JPA Criteria API , поскольку это новый и предпочтительный инструмент для написания запросов Criteria. Итак, с этого момента мы будем называть его просто Criteria API.
Criteria API помогает создавать объект запроса Criteria, применяя к нему различные фильтры и логические условия. Это альтернативный способ манипулирования объектами и возврата нужных данных из таблицы СУБД.
Построение запросов с использованием JPA несложно; однако иногда мы забываем простые вещи, которые имеют огромное значение.
Одной из таких вещей являются параметры запроса JPA, и именно на них мы сосредоточимся в этом руководстве.
Начнем с объяснения того, что такое параметры запроса.
В этом руководстве мы обсудим определение уникальных ограничений с помощью JPA и Hibernate .
Сначала мы рассмотрим уникальные ограничения и то, чем они отличаются от ограничений первичного ключа.
Затем мы рассмотрим важные аннотации JPA, @ Column(unique=true)
и @UniqueConstraint.
Мы реализуем их, чтобы определить уникальные ограничения для одного столбца и нескольких столбцов.
Наконец, мы узнаем, как определить уникальные ограничения для столбцов таблицы, на которые ссылаются.
В этом руководстве мы обсудим , как правильно настроить Spring Transactions , как использовать аннотацию @Transactional
и распространенные ловушки.
Для более подробного обсуждения базовой конфигурации сохраняемости ознакомьтесь с учебным пособием Spring with JPA .
По сути, существует два различных способа настройки транзакций, аннотаций и АОП, каждый из которых имеет свои преимущества. Здесь мы собираемся обсудить более распространенную конфигурацию аннотаций.
JPA Buddy — это широко используемый плагин IntelliJ IDEA, предназначенный как для новых, так и для опытных разработчиков, которые работают с моделью данных JPA и связанными технологиями, такими как Spring Data JPA , инструменты управления версиями БД ( Flyway , Liquibase ), MapStruct и некоторые другие. Плагин предоставляет визуальные дизайнеры, генерацию кода и дополнительные проверки, которые должны упростить разработку и улучшить код в соответствии с лучшими практиками для JPA.
Плагин работает как с версиями IntelliJ IDEA Community, так и с Ultimate и использует модель «freemium». Большинство функций доступны бесплатно, и нам нужно будет купить подписку, чтобы получить доступ к платным.
В этом уроке мы рассмотрим основные функции плагина и посмотрим, как мы можем использовать их в цикле разработки приложения. В качестве примера возьмем популярное эталонное приложение — Spring PetClinic .
В этом кратком руководстве мы сосредоточимся на различных типах BootstrapMode
для репозиториев JPA, которые Spring предоставляет для изменения оркестровки их создания .
При запуске Spring Data сканирует репозитории и регистрирует их определения bean-компонентов как bean-компоненты с одноэлементной областью. Во время инициализации репозитории немедленно получают EntityManager .
В частности, они получают метамодель JPA и проверяют объявленные запросы.
По умолчанию JPA загружается синхронно. Следовательно, создание репозиториев блокируется до тех пор, пока не завершится процесс начальной загрузки . По мере роста числа репозиториев запуск приложения может занять много времени, прежде чем оно начнет принимать запросы.
В этом руководстве показано, как настроить Spring с JPA , используя Hibernate в качестве поставщика постоянства.
Пошаговое введение в настройку контекста Spring с использованием конфигурации на основе Java и базовой помпы Maven для проекта см . в этой статье .
Мы начнем с настройки JPA в проекте Spring Boot. Затем мы рассмотрим полную конфигурацию, которая нам нужна, если у нас есть стандартный проект Spring.
Вот видео по настройке Hibernate 4 с Spring 4 (рекомендуем посмотреть его в полном 1080p):
В этом руководстве мы узнаем, как можно пакетно вставлять и обновлять объекты с помощью Hibernate/JPA .
Пакетная обработка позволяет нам отправлять группу операторов SQL в базу данных за один сетевой вызов. Таким образом, мы можем оптимизировать использование сети и памяти нашим приложением.
В этом руководстве основное внимание будет уделено внедрению Spring Data JPA в проект Spring и полной настройке уровня сохраняемости. Пошаговое введение в настройку контекста Spring с использованием конфигурации на основе Java и базовой помпы Maven для проекта см . в этой статье .
Как мы обсуждали в предыдущей статье, уровень DAO обычно состоит из большого количества шаблонного кода, который можно и нужно упростить. Преимуществ такого упрощения много: уменьшение количества артефактов, которые нам необходимо определить и поддерживать, согласованность шаблонов доступа к данным и согласованность конфигурации.