[Java] Настройка Spring Data JPA с помощью Spring Boot (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
28-Мар-2021 15:32

До Spring Boot разработки вам нужно сделать несколько вещей, чтобы настроить Spring Data JPA . Вам не только нужно было аннотировать свои классы сущностей с помощью аннотаций преобразования, добавить Spring Data JPA зависимость и настроить соединение с базой данных. Вам также нужно включить репозитории и управление транзакциями и настроить EntityManagerFactory. Это - повторяющаяся и раздражающая задача.Spring Boot изменяет этот подход, предоставляя готовые к использованию интеграции, которые включают необходимые зависимости и огромный набор конфигураций по умолчанию. Но это не значит, что вы не можете отменить их, если вам нужно.В этой статье объясняется конфигурация Spring Boot по умолчанию для Spring Data JPA, какие параметры конфигурации вы можете использовать для ее изменения, а также конфигурацию, которую вы, возможно, захотите добавить.Обязательные зависимостиПрежде чем вы сможете приступить к настройке Spring Data JPA, вам необходимо добавить его в свое приложение. В приложении Spring Boot это обычно означает, что вам нужно добавить правильный стартер в зависимости вашего проекта. Самый простой способ сделать это для нового проекта - использовать Spring Initializr для настройки процесса сборки и добавления всех необходимых зависимостей. Для всех проектов Spring Boot вам необходимо добавить модуль spring-boot-starter-data-jpa .
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Вам также необходимо добавить зависимость JDBC драйвера для конкретной базы данных. В следующих примерах выполняется подключение к базе данных PostgreSQL и, следовательно, потребуется зависимость от JDBC драйвера PostgreSQL.
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>${postgresql.version}</version>
</dependency>
Конфигурация по умолчаниюКак упоминалось ранее, интеграция Spring Boot со Spring Data JPA обеспечивает обширную конфигурацию по умолчанию и добавляет большинство необходимых зависимостей в ваш проект. Она включает в себя:
  • зависимость от пула соединений HikariCP и базовой конфигурации по умолчанию. Вы можете установить все параметры конфигурации HikariCP в файле application.properties , добавив префикс spring.datasource.hikari к имени параметра.
  • создание базы данных в памяти H2, HSQL или Derby, если ваш путь к классам содержит соответствующий драйвер JDBC.
  • зависимость от Hibernate в качестве вашей реализации JPA и требуемую конфигурацию для создания экземпляра EntityManagerFactory.
  • зависимость и необходимая конфигурация для управления вашими транзакциями с помощью встроенного менеджера транзакций Atomikos.
  • необходимая конфигурация для использования репозиториев Spring Data JPA.
Примечание: поскольку Spring Data JPA использует Hibernate в качестве реализации JPA по-умолчанию, вы можете использовать все, что вы знаете о Hibernate, со Spring Data JPA.
Как видите, это в основном все, что вам ранее приходилось настраивать в своем классе конфигурации. Вот почему большинство проектов предпочитают использовать Spring Boot классическому Spring.Если вы используете базу данных в памяти, вам не нужно предоставлять какую-либо настраиваемую конфигурацию. Конфигурации Spring Boot по умолчанию обычно достаточно для всех малых и средних приложений.Большинство корпоративных приложений используют автономную базу данных, например, сервер базы данных PostgreSQL или Oracle. В этом случае вам нужно только предоставить URL-адрес, имя пользователя и пароль для подключения к этой базе данных. Вы можете сделать это, установив следующие 3 свойства конфигурации в файле application.properties .
spring.datasource.url=jdbc:postgresql://localhost:5432/test
spring.datasource.username=postgres
spring.datasource.password=postgres
Настройка конфигурации по умолчаниюПросто потому, что Spring Data JPA автоматически интегрирует несколько других проектов Spring и настраивает их для вас, вы не обязаны их использовать. Вы можете легко изменить поведение и интеграцию по умолчанию, указав различные зависимости и добавив несколько параметров в свою конфигурацию.Использование другого пула подключенийПо умолчанию Spring Boot добавляет зависимость к HikariCP и настраивает ее. Вы можете использовать другой пул соединений, исключив HikariCP из зависимостей вашего проекта.
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
        </exclusion>
    </exclusions>
</dependency>
Затем Spring Boot пытается найти следующие реализации пула соединений в описанном порядке в пути к классам и использует первую из найденных:
  • Пул соединений Tomcat,
  • Commons DBCP2,
  • Oracle UCP.
Если вы не хотите полагаться на сканирование пути к классам вашего приложения, вы также можете явно указать пул соединений, настроив свойство spring.datasource.type .
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
После того, как вы изменили пул соединений, вы можете установить все свои стандартные параметры конфигурации в application.properties файл путем добавления префикса spring.datasource.tomcat, spring.datasource.dbcp2 или spring.datasource.oracleucp с именем параметра.Использование Bitronix Transaction ManagerВ прошлом Bitronix был популярным менеджером транзакций в приложениях Spring. Поддержка Spring Boot для него устарела и будет удалена в будущем.Если вы все еще хотите его использовать, вы можете добавить в свое приложение зависимость от spring-boot-starter-jta-bitronix . Затем Spring Boot будет включать все необходимые зависимости и настраивать Bitronix для управления вашими транзакциями.Деактивация репозиториев Spring Data JPAЯ рекомендую использовать репозитории Spring Data JPA. Они значительно упрощают реализацию вашей персистентности, предоставляя набор стандартных методов для сохранения, чтения и удаления сущностей. Они также предоставляют такие функции, как производные и настраиваемые запросы.Если вы решите не использовать эти функции, вы можете деактивировать все репозитории JPA в своей конфигурации.
spring.data.jpa.repositories.enabled=false
Дополнительный параметр конфигурации, который вы должны знатьВы можете использовать огромный набор параметров конфигурации, чтобы адаптировать поведение Spring Boot и используемых вами библиотек. Вы можете найти полный список всех поддерживаемых параметров в официальной документации Spring . В следующих разделах объясняются несколько параметров, которые вам необходимо знать.Настройка ведения журналаКак объясняется в Руководстве по ведению журнала Hibernate рекомендовано использовать 2 разные конфигурации ведения журнала для среды разработки и рабочей среды. Это, конечно, меняется не при настройке Spring Data JPA. Используя Spring Boot, вы можете настроить уровни журнала для всех категорий Hibernate в файле application.properties , добавив префикс logging.level к имени категории журнала.Конфигурация среды разработкиВо время разработки вы хотите получить как можно больше информации о взаимодействиях с базой данных. Это позволяет вам понять, как ваше приложение взаимодействует с базой данных, и найти проблемы с производительностью перед их развертыванием в рабочей среде.Чтобы получить всю необходимую информацию, рекомендуется использовать следующую конфигурацию.
logging.level.org.hibernate=INFO
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.cache=DEBUG
logging.level.org.hibernate.stat=DEBUG
Она активирует статистический компонент Hibernate. Он предоставляет вам сводную информацию о количестве и времени, затраченном Hibernate на выполнение наиболее важных операций во время каждого сеанса. Он также добавляет все выполненные операторы SQL в файл журнала и показывает, как Hibernate использовал кеш 2-го уровня.Spring Boot также поддерживает параметр spring.jpa.show-sql, чтобы включить ведение журнала операторов SQL. Но вам лучше избегать этого, по2тому что он игнорирует вашу структуру ведения журнала и записывает операторы SQL непосредственно в стандартный вывод.Конфигурация рабочей средыВ рабочей среде вы должны установить уровень журнала Hibernate на ERROR, чтобы сократить накладные расходы как можно меньше.
logging.level.org.hibernate=ERROR
Настройка свойств JPA и HibernateКогда вы используете JPA и Hibernate без Spring Data JPA, вы обычно настраиваете его с помощью файла persistence.xml. В элементе свойств этого XML-файла вы можете указать параметры конфигурации, зависящие от поставщика.Вы можете установить все эти параметры в файле application.properties , добавив префикс spring.jpa.properties к имени свойства конфигурации.
spring.jpa.properties.hibernate.generate_statistics=true
Настройка создания базы данныхПо умолчанию Spring Boot автоматически создает для вас базы данных в памяти. Эта функция отключена для всех остальных баз данных. Вы можете активировать ее, установив для свойства spring.jpa.hibernate.ddl-auto значения: none, validate, update или create-drop .Рекомендуется вместо этого использовать Spring Boot's Flyway или интеграцию с Liquibase . Они более мощные и дают вам полный контроль над определением структур ваших таблиц.ВыводSpring Boot стартер для Spring Data JPA добавляет в ваше приложение наиболее распространенные зависимости и разумную конфигурацию по умолчанию. Единственное, что вам нужно добавить, это информацию о подключении к вашей базе данных.Но это не значит, что вам обязательно нужно использовать эти значения по умолчанию. Как вы узнали из этой статьи, вы можете легко заменить все зависимости по умолчанию и настроить конфигурацию по умолчанию по своим требованиям.
===========
Источник:
habr.com
===========

===========
Автор оригинала: Thorben Janssen
===========
Похожие новости: Теги для поиска: #_java, #_spring_data_jpa, #_spring_boot, #_java
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 25-Ноя 12:10
Часовой пояс: UTC + 5