ResultTransformer для получения проекции ManyToMany (пример на Hibernate и Spring Boot)

Здесь напишем более сложный ResultTransformer, чем в предыдущем примере. Помимо коллекции @OneToMany сущность будет содержать еще коллекцию @ManyToMany.

Кроме того, попробуем получить результат еще одним способом — без ResultTransformer, а с помощью операций над Stream.
Читать далее «ResultTransformer для получения проекции ManyToMany (пример на Hibernate и Spring Boot)»

Transaction Propagation

В этой статье рассмотрим настройку propagation аннотации @Transactional. Аннотация @Transactional (без настроек) заставляет метод выполняться в рамках транзакции.
Читать далее «Transaction Propagation»

@Transactional, уровни изоляции

В этой статье рассмотрим уровни изоляции на примере задачи: написать веб-приложение с одной веб-страницей, которое выдает число обращений к ней (или хитов).
Читать далее «@Transactional, уровни изоляции»

Введение в QueryDSL

Есть несколько способов составить JPA-запрос, среди них — неудобный JPA Criteria API. Все признают, что запросы, составленные таким способом, плохо читаются. Как альтернатива появилась библиотека QueryDSL — она гораздо удобнее.
Читать далее «Введение в QueryDSL»

Аннотация @Query

Мы рассматривали запросы, генерируемые из имени метода. Так удобно писать простые запросы. Но если в запросе более 1-2 параметров или несколько join,  то удобнее использовать аннотацию @Query.
Читать далее «Аннотация @Query»

@SqlResultSetMapping — превращение результата SQL-запроса в объект

В этой статье пойдет речь о том, как превратить результат нативного SQL-запроса в объект.
Читать далее «@SqlResultSetMapping — превращение результата SQL-запроса в объект»

Тестирование репозиториев: @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»