1 puntos por abcdkh1209 2026-01-12 | Aún no hay comentarios. | Compartir por WhatsApp

Hola. Comparto una librería que creé para ofrecer la comodidad de Spring Data JPA en un entorno de Hibernate Reactive + Kotlin Coroutines.

Motivo de su creación

Al usar Hibernate Reactive, era incómodo no contar con funciones como findByEmail() y @Query de Spring Data JPA. Al tener que manejar directamente la API de Mutiny, aumentaba el boilerplate y había que escribir HQL manualmente para cada método de consulta.

Existe Spring Data R2DBC, pero implicaba renunciar a funciones como el mapeo de entidades de Hibernate o Lazy Loading, y Panache es exclusivo de Quarkus, así que no se podía usar en Spring Boot.

Funciones principales

  • Implementación automática de interfaces Repository: con solo heredar CoroutineCrudRepository, los métodos CRUD se generan automáticamente
  • Métodos de consulta: consultas basadas en nombres de método como findByEmail(), existsByName(), countByStatus()
  • Paginación: soporte para Page<T>, Slice<T>, Pageable
  • Anotación @Query: escritura directa de JPQL, binding de parámetros nombrados/posicionales

Ejemplo de uso

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 tecnológico

Kotlin 2.1, Hibernate Reactive 3.1, Mutiny, Vert.x, Spring Boot 3.4

Enlace

Se puede usar de inmediato a través de JitPack. ¡La retroalimentación es bienvenida!

Aún no hay comentarios.

Aún no hay comentarios.