Hibernate Reactive Coroutines - Hibernate Reactive comme Spring Data JPA
(github.com/clroot)Bonjour. Je partage une bibliothèque que j’ai créée afin d’apporter, dans un environnement Hibernate Reactive + Kotlin Coroutines, la même praticité que Spring Data JPA.
Pourquoi je l’ai créée
En utilisant Hibernate Reactive, l’absence de fonctionnalités comme findByEmail() ou @Query de Spring Data JPA était contraignante. Comme il fallait manipuler directement l’API Mutiny, cela augmentait le boilerplate, et il fallait écrire le HQL à la main pour chaque méthode de requête.
Il existe bien Spring Data R2DBC, mais il fallait renoncer à des fonctionnalités comme le mapping d’entités de Hibernate ou le lazy loading, et Panache étant réservé à Quarkus, il n’était pas utilisable avec Spring Boot.
Fonctionnalités principales
- Implémentation automatique des interfaces Repository : génération automatique des méthodes CRUD simplement en héritant de
CoroutineCrudRepository - Méthodes de requête : requêtes basées sur le nom des méthodes comme
findByEmail(),existsByName(),countByStatus() - Pagination : prise en charge de
Page<T>,Slice<T>,Pageable - Annotation
@Query: écriture directe de JPQL, binding de paramètres nommés/positionnels
Exemple d’utilisation
interface UserRepository : CoroutineCrudRepository<User, Long> {
suspend fun findByEmail(email: String): User?
suspend fun findAllByStatus(status: Status, pageable: Pageable): Page<User>
@Query("SELECT u FROM User u WHERE u.role = :role")
suspend fun findByRole(role: Role): List<User>
@Modifying
@Query("UPDATE User u SET u.status = :status WHERE u.id = :id")
suspend fun updateStatus(id: Long, status: Status): Int
}
Stack technique
Kotlin 2.1, Hibernate Reactive 3.1, Mutiny, Vert.x, Spring Boot 3.4
Liens
Vous pouvez l’utiliser immédiatement via JitPack. Les retours sont les bienvenus !
Aucun commentaire pour le moment.