Hibernate Reactive Coroutines - Hibernate Reactive como Spring Data JPA
(github.com/clroot)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.