Skip to main content

Database Operasi dengan POSTGRESQL dan Quarkus

Panduan Setup Database PostgreSQL di Quarkus



 

Quarkus adalah framework modern untuk pengembangan aplikasi Java yang sangat optimal untuk cloud-native dan serverless. Dalam artikel ini, kita akan membahas bagaimana cara menghubungkan aplikasi Quarkus dengan database PostgreSQL, termasuk konfigurasi, implementasi, dan contoh operasi database menggunakan Hibernate ORM dan Panache.

Struktur Files dan Folder 

Berikut adalah struktur folder dan file yang direkomendasikan untuk proyek Quarkus yang menggunakan PostgreSQL sebagai database:

hello-quarkus/ 
│── src/  
│   ├── main/  
│   │   ├── java/  
│   │   │   └── org/acme/  
│   │   │       ├── entity/  
│   │   │       │   └── Person.java  
│   │   │       ├── repository/  
│   │   │       │   └── PersonRepository.java  
│   │   │       ├── resource/  
│   │   │       │   └── PersonResource.java  
│   │   │       └── config/  
│   │   │           └── DatabaseConfig.java (opsional, jika butuh konfigurasi tambahan)  
│   │   ├── resources/  
│   │   │   ├── application.properties  
│   │   │   └── import.sql (opsional, untuk seeding data awal)  
│   ├── test/  
│   │   ├── java/  
│   │   │   └── org/acme/  
│   │   │       └── resource/  
│   │   │           └── PersonResourceTest.java  
│── target/ (dihasilkan setelah build)  
│── .mvn/  
│── mvnw  
│── mvnw.cmd  
│── pom.xml  
│── README.md  


1. Menambahkan Dependency PostgreSQL di Quarkus

Pertama, tambahkan dependensi yang diperlukan di pom.xml:

<dependencies>
    <!-- Quarkus Hibernate ORM dengan Panache -->
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-hibernate-orm-panache</artifactId>
    </dependency>
    
    <!-- Driver PostgreSQL -->
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-jdbc-postgresql</artifactId>
    </dependency>
</dependencies> 

2. Konfigurasi Database di application.properties

Tambahkan konfigurasi koneksi ke PostgreSQL di file src/main/resources/application.properties:

# Konfigurasi database
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/mydatabase
quarkus.datasource.username=myuser
quarkus.datasource.password=mypassword

# Hibernate ORM
quarkus.hibernate-orm.database.generation=update
quarkus.hibernate-orm.log.sql=true
Catatan: Pastikan PostgreSQL sudah berjalan di sistem Anda dengan database yang telah dibuat. 

3. Membuat Entity Menggunakan Panache

Quarkus menyediakan Hibernate ORM dengan Panache untuk mempermudah pengelolaan entity. Contoh entity Person:

import io.quarkus.hibernate.orm.panache.PanacheEntity;
import jakarta.persistence.Entity;

@Entity
public class Person extends PanacheEntity {
    public String name;
    public int age;
}

Dengan menggunakan PanacheEntity, kita tidak perlu mendefinisikan ID secara eksplisit karena sudah disediakan oleh superclass-nya.

4. Membuat Repository Menggunakan Panache

Jika ingin menggunakan repository pattern, kita bisa membuat PersonRepository:

import io.quarkus.hibernate.orm.panache.PanacheRepository;
import jakarta.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class PersonRepository implements PanacheRepository<Person> {
    public Person findByName(String name) {
        return find("name", name).firstResult();
    }
}

5. Membuat REST API untuk CRUD Operation

Untuk mengakses data melalui REST API, kita bisa membuat PersonResource:

import jakarta.transaction.Transactional;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import java.util.List;

@Path("/persons")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class PersonResource {
    private final PersonRepository personRepository;

    public PersonResource(PersonRepository personRepository) {
        this.personRepository = personRepository;
    }

    @GET
    public List<Person> getAllPersons() {
        return personRepository.listAll();
    }

    @POST
    @Transactional
    public void addPerson(Person person) {
        personRepository.persist(person);
    }

    @GET
    @Path("/{name}")
    public Person getPersonByName(@PathParam("name") String name) {
        return personRepository.findByName(name);
    }
}

6. Menjalankan Aplikasi

Jalankan aplikasi Quarkus dengan perintah:

./mvnw quarkus:dev

Akses REST API:

  • GET semua data: http://localhost:8080/persons

  • POST data baru: http://localhost:8080/persons

  • GET berdasarkan nama: http://localhost:8080/persons/{name}

Kesimpulan

Dengan Quarkus dan PostgreSQL, kita dapat membangun REST API yang cepat dan efisien. Dengan menggunakan Panache, pengelolaan database menjadi lebih mudah dan deklaratif. Selamat mencoba! 🚀


 

 

 

 

 

 

Comments

Popular posts from this blog

Numpang Kerja Remote dari Bandung Creative Hub

Semalam kemarin (09 Januari 2019) tidak sengaja kami sekeluarga lewat Bandung Digital Hub saat pulang dari Fish Wow Cheeseee  yang di Jl. Lombok. Bandung Digital Hub ini sendiri berlokasi tidak jauh dari dari tempat kami makan tersebut, yaitu berlokasi di Jl. Laswi No.7, Kacapiring, Batununggal, Kota Bandung, Jawa Barat 40271. Berhubung untuk bulan Januari 2019 ini sedang tidak masuk ke kantor maka saya putuskan untuk besoknya (hari ini 09 Januari 2019) nyoba untuk bekerja remote dari Bandung Digital Hub , apalagi istri yang kebetulan follower pak Ridwan Kamil di Instagram juga Facebook dan tampaknya pernah lihat ulasan mengenai tempat ini sehingga tampak antusias supaya saya datang ketempat ini ini dan mencoba bekerja dari gedung creative hub dan coworking yang keren ini.  Tempat Parkir Masalah utama saat kita datang ke coworking space terutama yang berlokasi di Bandung (atau mungkin kota-kota lainnya) adalah lahan parkir, kadang lahan parkir ...

Numpang Kerja Remote dari Bandung Digital Valley

Satu lagi co-working place  gratisan dan keren yang cukup populer dikota Bandung, co-working place yang juga memberikan fasilitas tempat kerja (co-working place) dan fitur-fitur menarik lainnya,  co-working place keren  ini adalah Bandung Digital Valley atau yang sering disingkat BDV . C o-working place  Bandung Digital Valley ini  merupakan bagian dari Telkom , mulai aktif digunakan dari sekitar tahun 2012 lalu .  Tempat ini biasanya menjadi tempat favorit bagi para pengiat startup, freelancer, dan mahasiswa . Gedung BDV Gedung BDV Gedung BDV Co-working space Bandung Digital Valley ini sendiri berlokasi di Menara Bandung Digital Valley, Jl. Gegerkalong Hilir No.47, Sukarasa, Sukasari, Kota Bandung, Jawa Barat, detailnya bisa dilihat di Google map berikut. Pemandangan jalan setelah pintu satpam. Free Co-working Space Membership Untuk mulai menggunakan fasilitas co-working space ini secara gratis maka yang pe...

Membuat Authentikasi Berbasis Token pada Spring Boot dengan Spring Security dan JWT

Setelah beberapa kali mencari tutorial tentang otentikasi aplikasi web Spring Boot dengan menggunakan JWT yang mudah dipahami akhirnya saya menemukan artikel berbahasa Inggris tapi sangat mudah dipahami  dan diikuti, artikel tersbut berada disini , dengan judul " Spring Boot Token based Authentication with Spring Security & JWT ". Untuk memudahkan orang-orang yang terbiasa membaca artikel dalam bahasa indonesia (termasuk saya sendiri), artikel ini saya buat dan susun ulang (artikel aslinya tidak tertulis dengan runtut dan dapat membuat pemula bingung dengan berbagai error yang muncul) supaya lebih mudah untuk diikuti dan dapat di gunakan bersama. Applikasi yang akan kita buat adalah aplikasi web yang setiap endpoint-nya hanya bisa di akses oleh role tertentu. 1. Tools Yang Diperlukan IntelliJ Idea text editor. Spring Assistant Plugin. Postman. PostgreSQL + DBeaver. Min Java 8 Spring Boot 2.1.8 (dengan Spring Security, Spring Web, Spring Data JPA). jjwt 0.9.1. Maven 3.6.1....