1 Punkte von abcdkh1209 2026-01-12 | Noch keine Kommentare. | Auf WhatsApp teilen

Hallo. Ich habe eine Bibliothek erstellt, die in einer Hibernate-Reactive- + Kotlin-Coroutines-Umgebung den Komfort von Spring Data JPA bietet, und möchte sie hier teilen.

Warum ich sie erstellt habe

Bei der Nutzung von Hibernate Reactive war es umständlich, dass Funktionen wie findByEmail() oder @Query aus Spring Data JPA fehlten. Da ich die Mutiny-API direkt verwenden musste, entstand viel Boilerplate, und für jede Query-Methode musste ich HQL selbst schreiben.

Es gibt zwar Spring Data R2DBC, aber dafür hätte ich auf Funktionen wie Hibernate-Entity-Mapping oder Lazy Loading verzichten müssen, und Panache ist nur für Quarkus gedacht und kann daher in Spring Boot nicht verwendet werden.

Hauptfunktionen

  • Automatische Implementierung von Repository-Interfaces: Durch bloßes Erben von CoroutineCrudRepository werden CRUD-Methoden automatisch erzeugt
  • Query-Methoden: Auf Methodennamen basierende Queries wie findByEmail(), existsByName(), countByStatus() usw.
  • Pagination: Unterstützung für Page<T>, Slice<T>, Pageable
  • @Query-Annotation: Direktes Schreiben von JPQL, Binding von Named-/Positional-Parametern

Anwendungsbeispiel

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  
}  

Tech-Stack

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

Links

Kann direkt über JitPack verwendet werden. Feedback ist willkommen!

Noch keine Kommentare.

Noch keine Kommentare.