Статьи

Учебное пособие по Spring Data JPA: получение необходимых зависимостей

Прежде чем мы сможем создать приложение, которое использует Spring Data JPA, нам нужно получить необходимые зависимости.

В этом сообщении в блоге указаны необходимые компоненты и описано, как их можно получить с помощью Maven.

Давайте начнем.

Дополнительное чтение: Если вы не знакомы с Spring Data JPA, вам следует прочитать следующий пост в блоге, прежде чем продолжить чтение этого блога: Учебное пособие по Spring Data JPA: Введение представляет собой краткое введение в Spring Data JPA и дает обзор Spring Data. интерфейсы репозитория.

Какие компоненты нам нужны?

Если мы хотим реализовать постоянный уровень, который использует Spring Data JPA, нам нужны следующие компоненты:

  • Драйвер JDBC обеспечивает реализацию JDBC API для конкретной базы данных. Мы используем базу данных H2 в памяти, потому что это облегчает запуск нашего примера приложения.
  • Источник данных обеспечивает соединения с базой данных для нашего приложения. Мы используем источник данных HikariCP, потому что это самый быстрый источник данных на этой планете.
  • Поставщик JPA реализует API персистентности Java. Мы используем Hibernate, потому что это самый распространенный провайдер JPA.
  • Spring Data JPA скрывает используемый JPA-провайдер за абстракцией репозитория.

Давайте продолжим и выясним, как мы можем получить необходимые зависимости с Maven.

Получение необходимых зависимостей с Maven

Мы можем получить необходимые зависимости с Maven, используя одну из следующих опций:

  1. Мы можем управлять нашими зависимостями с помощью Spring IO Platform .
  2. Мы можем управлять нашими зависимостями «вручную».

Давайте посмотрим на оба варианта.

Использование платформы Spring.IO

Если мы используем Spring IO Platform, нам нужно выполнить следующие шаги:

  1. Включить Spring IO Platform.
  2. Настройте необходимые зависимости в файле pom.xml.

Во-первых , мы можем включить Spring IO Platform, добавив следующий XML в наш файл POM:

01
02
03
04
05
06
07
08
09
10
11
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.spring.platform</groupId>
            <artifactId>platform-bom</artifactId>
            <version>1.1.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

После включения Spring IO Platform нам не нужно беспокоиться о версиях зависимостей, потому что Spring IO Platform об этом позаботится. Это означает, что мы можем получить необходимые зависимости, добавив следующий XML- код в раздел зависимостей нашего файла POM:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!-- Database (H2) -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
          
<!-- DataSource (HikariCP) -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>
  
<!-- JPA Provider (Hibernate) -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
</dependency>
  
<!-- Spring Data JPA -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
</dependency>

В нашем примере приложения также есть несколько других зависимостей. Вы можете получить полный список зависимостей, прочитав его файл pom.xml .

Дополнительное чтение:

Управление нашими зависимостями вручную

Если мы управляем нашими зависимостями «вручную», нам нужно указать номера версий всех зависимостей. Мы можем сделать это, добавив следующие объявления зависимостей в раздел зависимостей нашего файла pom.xml :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!-- Database (H2) -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.182</version>
</dependency>
          
<!-- DataSource (HikariCP) -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.2.5</version>
</dependency>
  
<!-- JPA Provider (Hibernate) -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.3.7.Final</version>
</dependency>
  
<!-- Spring Data JPA -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.7.1.RELEASE</version>
</dependency>

Я использовал версии зависимостей, предоставляемые платформой Spring IO . Если вы хотите использовать более новые версии, вы можете найти последние доступные версии на mvnrepository.com .

Я предполагаю очевидный вопрос: какой вариант мы должны использовать?

Каков наилучший способ управления нашими зависимостями?

Если мы начинаем новый проект, мы должны использовать Spring IO Platform, потому что

  • Нам не нужно беспокоиться о зависимостях версий. Например, нам не нужно беспокоиться о проблемах несовместимости, потому что мы знаем, что наши зависимости работают вместе как шарм.
  • Мы всегда можем переопределить версии зависимостей, предоставляемые платформой Spring.IO.

С другой стороны, если мы добавляем Spring Data JPA в существующий проект, часто разумнее управлять нашими зависимостями вручную, потому что это требует меньше работы.

Давайте продолжим и подведем итог тому, что мы узнали из этого блога.

Резюме

Этот пост научил нас четырем вещам:

  • Если мы хотим реализовать постоянный уровень, использующий Spring Data JPA, нам понадобятся следующие компоненты: драйвер JDBC, источник данных, поставщик JPA и JPA Spring Data.
  • Мы можем получить необходимые зависимости, используя платформу Spring IO или управляя нашими зависимостями вручную.
  • Если мы начинаем новый проект, мы должны использовать платформу Spring IO, потому что она гарантирует, что наши зависимости работают вместе, как обаяние.
  • Если мы добавляем Spring Data JPA в существующий проект, мы должны управлять нашими зависимостями вручную, потому что это требует меньше работы.

Следующая часть этого руководства описывает, как мы можем настроить Spring Data JPA .