Hibernate Reactive Coroutines - Hibernate Reactive'e Spring Data JPA gibi
(github.com/clroot)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
CoroutineCrudRepositorykalıtımıyla CRUD metotları otomatik oluşturulur - Sorgu metotları:
findByEmail(),existsByName(),countByStatus()gibi metot adı tabanlı sorgular - Sayfalama:
Page<T>,Slice<T>,Pageabledesteğ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.