Тестирование репозиториев: @DataJdbcTest, @Commit, @DirtiesContext

Если @SpringBootTest поднимает для теста весь контекст, то @DataJdbcTest – только тот, что относится к Spring Data. В том числе она поднимает наследников CrudRepository – они включаются в контекст.
Читать далее «Тестирование репозиториев: @DataJdbcTest, @Commit, @DirtiesContext»

Использование QuerydslPredicateExecutor

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

Читать далее «Использование QuerydslPredicateExecutor»

Pagination и Sorting в Spring Data JPA

В этой статье рассмотрим, как выводить данные постранично в Spring Data JPA. В предыдущей статье по Spring Data JDBC уже рассмотрены интерфейсы Page (выведенная страница) и Pagable (для запроса страницы). Здесь они используются аналогично.

Читать далее «Pagination и Sorting в Spring Data JPA»

Pagination и Sorting в Spring Data JDBC

В этой статье рассмотрим, как выводить данные постранично в Spring Data JDBC. Для этого предусмотрены интерфейсы Page (выведенная страница) и Pagable (для запроса страницы).

Читать далее «Pagination и Sorting в Spring Data JDBC»

Проекции в Spring

DTO-объект можно формировать не только в контроллере или сервисе, но и возвращать сразу из базы. Тогда они называются проекциями. В этой статье мы рассмотрим, как заставить метод репозитория возвращать проекцию.
Читать далее «Проекции в Spring»

Тестирование с помощью Testcontainers: как поднять в контейнере тестовую базу

Библиотека Testcontainers позволяет поднять тестовую среду в Docker-контейнере на время тестов, что довольно удобно.
Читать далее «Тестирование с помощью Testcontainers: как поднять в контейнере тестовую базу»

Получение результата запроса в виде Map в Hibernate

Иногда удобно извлечь из базы данные в вид Map. Например, если запрос содержит group by. Ниже рассмотрим, как это сделать.
Читать далее «Получение результата запроса в виде Map в Hibernate»

Кэш первого и второго уровня в Hibernate и READ_ONLY CacheConcurrencyStrategy

В этой статье мы рассмотрим, что такое кэш первого и второго уровня в Hibernate на примере Spring Boot приложения.
Читать далее «Кэш первого и второго уровня в Hibernate и READ_ONLY CacheConcurrencyStrategy»

Как получить проекцию OneToMany (пример на Hibernate и Spring Boot)

Мы уже рассматривали несколько способов получить проекцию. Самым мощным считается ResultTransformer. Его мы и будем использовать ниже для получения проекции OneToMany.
Читать далее «Как получить проекцию OneToMany (пример на Hibernate и Spring Boot)»

Способы получения проекций в Hibernate

Иногда требуется получить из базы не все поля сущности, а выборочно.

Например, есть шаблон проектирования DTO (Data Transfer Object) – суть его в том, что мы создаем специальный класс с небольшим количеством полей для отправки на фронтенд. К примеру, есть сущность City c 20 полями, а мы создаем для нее класс CityDto, который имеет всего два поля: id и name.
Читать далее «Способы получения проекций в Hibernate»