1 pontos por abcdkh1209 2026-01-12 | Ainda não há comentários. | Compartilhar no WhatsApp

Olá. Compartilho uma biblioteca que criei para oferecer a conveniência do Spring Data JPA em um ambiente Hibernate Reactive + Kotlin Coroutines.

Motivo da criação

Ao usar Hibernate Reactive, senti falta de recursos como findByEmail() e @Query do Spring Data JPA, o que era inconveniente. Como eu precisava lidar diretamente com a API Mutiny, a quantidade de boilerplate aumentava e eu tinha que escrever HQL manualmente para cada método de consulta.

Existe o Spring Data R2DBC, mas isso significava abrir mão de recursos como o mapeamento de entidades do Hibernate e Lazy Loading, e o Panache é exclusivo do Quarkus, então não podia ser usado no Spring Boot.

Principais recursos

  • Implementação automática da interface Repository: geração automática de métodos CRUD apenas herdando CoroutineCrudRepository
  • Métodos de consulta: consultas baseadas no nome do método, como findByEmail(), existsByName() e countByStatus()
  • Paginação: suporte a Page<T>, Slice<T> e Pageable
  • Anotação @Query: escrita direta de JPQL, binding de parâmetros named/positional

Exemplo 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 técnico

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

Link

Pode ser usado imediatamente via JitPack. Feedbacks são bem-vindos!

Ainda não há comentários.

Ainda não há comentários.