1 points par abcdkh1209 2026-01-12 | Aucun commentaire pour le moment. | Partager sur WhatsApp

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.

Aucun commentaire pour le moment.