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:
│── 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
Post a Comment