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

Numpang Kerja Remote dari Bandung Digital Valley

Cara Decompile berkas Dex dan Apk Android