नमस्ते। मैंने Hibernate Reactive + Kotlin Coroutines environment में Spring Data JPA जैसी सुविधा देने वाली एक library बनाई है और उसे साझा कर रहा हूँ.

इसे बनाने की वजह

Hibernate Reactive इस्तेमाल करते समय Spring Data JPA के findByEmail(), @Query जैसे features न होने से असुविधा होती थी। Mutiny API को सीधे संभालने पर boilerplate बढ़ जाता था, और हर query method के लिए HQL भी सीधे लिखना पड़ता था।

Spring Data R2DBC मौजूद है, लेकिन उसमें Hibernate की entity mapping या Lazy Loading जैसी सुविधाएँ छोड़नी पड़ती थीं, और Panache केवल Quarkus के लिए है, इसलिए Spring Boot में उसका उपयोग नहीं किया जा सकता था।

मुख्य features

  • Repository interface का automatic implementation: सिर्फ CoroutineCrudRepository inherit करने से CRUD methods अपने आप बन जाते हैं
  • Query methods: findByEmail(), existsByName(), countByStatus() आदि, method name आधारित queries
  • Pagination: Page<T>, Slice<T>, Pageable support
  • @Query annotation: JPQL सीधे लिखना, Named/Positional parameter binding

उपयोग उदाहरण

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  
}  

तकनीकी स्टैक

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

लिंक

इसे JitPack के जरिए तुरंत इस्तेमाल किया जा सकता है। Feedback का स्वागत है!

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.