1 puan yazan abcdkh1209 2026-01-12 | Henüz yorum yok. | WhatsApp'ta paylaş

Merhaba. Hibernate Reactive + Kotlin Coroutines ortamında Spring Data JPA'nin sunduğu kullanım kolaylığını sağlayan bir kütüphane geliştirip paylaşıyorum.

Geliştirme motivasyonu

Hibernate Reactive kullanırken Spring Data JPA'deki findByEmail(), @Query gibi özelliklerin olmaması rahatsız ediciydi. Mutiny API'yi doğrudan kullanınca boilerplate arttı ve her sorgu metodu için HQL'i elle yazmak gerekti.

Spring Data R2DBC mevcut olsa da Hibernate'in entity mapping veya Lazy Loading gibi özelliklerinden vazgeçmek gerekiyordu; Panache ise yalnızca Quarkus'a özel olduğu için Spring Boot'ta kullanılamıyordu.

Başlıca özellikler

  • Repository arayüzünün otomatik uygulanması: Sadece CoroutineCrudRepository kalıtımıyla CRUD metotları otomatik oluşturulur
  • Sorgu metotları: findByEmail(), existsByName(), countByStatus() gibi metot adı tabanlı sorgular
  • Sayfalama: Page<T>, Slice<T>, Pageable desteği
  • @Query anotasyonu: JPQL'i doğrudan yazma, Named/Positional parametre bağlama

Kullanım örneği

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  
}  

Teknoloji yığını

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

Bağlantı

JitPack üzerinden doğrudan kullanılabilir. Geri bildirimlere açığım!

Henüz yorum yok.

Henüz yorum yok.