1 poin oleh abcdkh1209 2026-01-12 | Belum ada komentar. | Bagikan ke WhatsApp

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 CoroutineCrudRepository untuk 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.

Belum ada komentar.