Hibernate Reactive Coroutines - Hibernate Reactive seperti Spring Data JPA
(github.com/clroot)Halo. Saya membuat dan membagikan sebuah library yang menghadirkan kemudahan Spring Data JPA di lingkungan Hibernate Reactive + Kotlin Coroutines.
Latar belakang pembuatan
Saat menggunakan Hibernate Reactive, saya merasa kurang nyaman karena tidak ada fitur seperti findByEmail() dan @Query milik Spring Data JPA. Karena harus menangani API Mutiny secara langsung, boilerplate menjadi banyak, dan saya juga harus menulis HQL secara manual untuk setiap metode query.
Memang ada Spring Data R2DBC, tetapi itu berarti harus mengorbankan fitur seperti entity mapping Hibernate atau Lazy Loading. Sementara itu, Panache khusus untuk Quarkus sehingga tidak bisa digunakan di Spring Boot.
Fitur utama
- Implementasi otomatis interface repository: cukup mewarisi
CoroutineCrudRepositoryuntuk menghasilkan metode CRUD secara otomatis - Metode query: query berbasis nama metode seperti
findByEmail(),existsByName(),countByStatus() - Pagination: mendukung
Page<T>,Slice<T>,Pageable - Anotasi
@Query: menulis JPQL secara langsung, binding parameter Named/Positional
Contoh penggunaan
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
Tautan
Bisa langsung digunakan melalui JitPack. Masukan sangat diterima!
Belum ada komentar.