1 ポイント 投稿者 abcdkh1209 2026-01-12 | まだコメントはありません。 | WhatsAppで共有

こんにちは。Hibernate Reactive + Kotlin Coroutines環境で、Spring Data JPAの利便性を提供するライブラリを作成したので共有します。

作ることになったきっかけ

Hibernate Reactiveを使う中で、Spring Data JPAのfindByEmail()@Queryのような機能がなく、不便でした。Mutiny APIを直接扱うため、ボイラープレートが増え、クエリメソッドごとにHQLを直接書かなければなりませんでした。

Spring Data R2DBCもありますが、HibernateのエンティティマッピングやLazy Loadingのような機能を諦める必要があり、PanacheはQuarkus専用のためSpring Bootでは使えませんでした。

主な機能

  • Repositoryインターフェースの自動実装: CoroutineCrudRepositoryを継承するだけでCRUDメソッドを自動生成
  • クエリメソッド: findByEmail(), existsByName(), countByStatus() など、メソッド名ベースのクエリ
  • Pagination: Page<T>, Slice<T>, Pageable をサポート
  • @Queryアノテーション: JPQLの直接記述、Named/Positionalパラメータバインディング

使用例

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経由ですぐに利用できます。フィードバック歓迎です!

まだコメントはありません。

まだコメントはありません。