Добавить в корзинуПозвонить
Найти в Дзене
Записки о Java

Знакомство с JPA и первые шаги в Spring Data JPA

JPA (Java Persistence API) — это стандарт Java для работы с ORM. Hibernate — это реализация JPA. То есть JPA — это интерфейсы, а Hibernate — конкретный движок. Spring Data JPA — это надстройка Spring над JPA, которая позволяет: Добавим зависимости в pom.xml (если используете Maven): <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies> 💡 Мы используем H2 для простоты — в продакшене замените на PostgreSQL или MySQL. Spring Data JPA умеет генерировать запросы на основе имени метода: Если логика сложная — используем аннотацию @Query: nativeQuery = true — если пишете SQL, а не JPQL. Примеры, рассмотренные в статье, можно найти по адресу: https://github.com/ShkrylAndrei/blog_yandex/tree/main/src/main/java/info/shkryl/springDataJpa/example1
Оглавление
Рисунок: Spring Data JPA
Рисунок: Spring Data JPA

Что такое JPA?

JPA (Java Persistence API) — это стандарт Java для работы с ORM. Hibernate — это реализация JPA. То есть JPA — это интерфейсы, а Hibernate — конкретный движок.

Spring Data JPA — это надстройка Spring над JPA, которая позволяет:

  • Автоматически генерировать CRUD-методы
  • Писать запросы по именам методов
  • Использовать аннотации и интерфейсы вместо реализации DAO

Настройка проекта

Добавим зависимости в pom.xml (если используете Maven):

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<scope>runtime</scope>

</dependency>

</dependencies>

💡 Мы используем H2 для простоты — в продакшене замените на PostgreSQL или MySQL.

Cоздаём сущность

Рисунок: создаем сущность UserBlog - часть 1
Рисунок: создаем сущность UserBlog - часть 1
Рисунок: создаем сущность UserBlog - часть 2
Рисунок: создаем сущность UserBlog - часть 2

Создаём репозиторий

Рисунок: создаем репозиторий
Рисунок: создаем репозиторий

Тестируем в @SpringBootApplication

Рисунок: тестируем созданный, пустой, репозиторий
Рисунок: тестируем созданный, пустой, репозиторий

Кастомные запросы — от простого к сложному

Spring Data JPA умеет генерировать запросы на основе имени метода:

Рисунок: добавляем запросы в репозиторий
Рисунок: добавляем запросы в репозиторий

Пишем JPQL вручную через @Query

Если логика сложная — используем аннотацию @Query:

Рисунок: добавляем запросы через @Query
Рисунок: добавляем запросы через @Query

nativeQuery = true — если пишете SQL, а не JPQL.

Заключение

Примеры, рассмотренные в статье, можно найти по адресу:

https://github.com/ShkrylAndrei/blog_yandex/tree/main/src/main/java/info/shkryl/springDataJpa/example1