Study
Spring Boot

Spring Data JPA: Query Methods & JPQL

Penjelasan

Selain method CRUD dasar, Spring Data JPA bisa men-generate query CUSTOM cukup dari NAMA METHOD-nya (disebut query derivation) — mis. findByNamaContaining(String nama) otomatis jadi query LIKE, TANPA implementasi manual. Untuk query yang terlalu kompleks buat derivation, dipakai @Query dengan JPQL (mirip SQL tapi mengoperasikan Entity Java, bukan tabel langsung).

Contoh Konsep

public interface ProdukRepository extends JpaRepository<Produk, Long> {
    // Query derivation dari nama method:
    List<Produk> findByHargaGreaterThanOrderByHargaDesc(double harga);
    Produk findFirstByNamaContaining(String nama);
    long countByStok(int stok);

    // JPQL custom untuk query lebih kompleks:
    @Query("SELECT p FROM Produk p WHERE p.harga > :minHarga AND p.stok > 0")
    List<Produk> cariProdukTersedia(@Param("minHarga") double minHarga);
}

Praktikum

Tambahkan method query derivation findByJudulContainingOrderByCreatedAtDesc(String judul) ke ArtikelRepository yang mencari artikel berdasarkan judul (LIKE) diurutkan dari yang terbaru.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Nama method query derivation HARUS MENGIKUTI KONVENSI PENAMAAN KETAT (findBy, existsBy, countBy, diikuti nama field Entity dan keyword seperti Containing/GreaterThan/OrderBy) — kesalahan ketik nama field yang tidak sesuai Entity akan membuat aplikasi GAGAL START dengan pesan error yang menjelaskan method mana yang tidak bisa di-parse.