Anda di halaman 1dari 11

Belajar JDBC

Java Database Connectivity (JDBC) adalah API yang memungkinkan program Java
berinteraksi dengan berbagai jenis database, termasuk PostgreSQL. JDBC menyediakan cara
standar untuk menghubungkan dan berkomunikasi dengan database menggunakan bahasa
pemrograman Java.
Untuk contoh pembelajaran kali ini, saya akan membuat aplikasi CRUD data produk.
Persyaratan
 Editor (Intellij Idea, Netbeans, Visual Studio Code, dll)
 Database (PostgreSQL)
 Java 17
Persiapan
Karena aplikasi yang akan kita buat akan terhubung dengan database, tahap pertama
yang akan kita lakukan membuat database-nya terlebih dahulu.
Buatlah sebuah database di PostgreSQL dengan nama db_retail.
Setelah berhasil membuat database, sekarang buatlah sebuah table dengan nama
master_produk yang akan kita gunakan untuk menampung data produk.
create table master_produk
(
id bigserial NOT NULL,
kode_produk varchar(50) not null,
nama_produk varchar(50) not null,
CONSTRAINT master_produk_pkey primary key(id),
CONSTRAINT kode_produk_unique unique(kode_produk)
);

Disusun Oleh : Cahendi__________________________________________________


Membuat Project
Buatlah sebuah project dengan nama belajar-jdbc.

Gambar 1 Tampilan Pembuatan Project di Intellij IDEA

Disusun Oleh : Cahendi__________________________________________________


Ubah file pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>id.aban</groupId>
<artifactId>belajar-jdbc</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>

<name>belajar-jdbc</name>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.6.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

Disusun Oleh : Cahendi__________________________________________________


Buatlah 2(dua) buah package dengan nama entities dan sql. Sehingga tampilan struktur
project seperti berikut :

Gambar 2 Tampilan Struktur Project

Disusun Oleh : Cahendi__________________________________________________


Buatlah sebuah Class Produk di package entities.
package id.aban.entities;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Produk {
private long id;
private String kodeProduk;
private String namaProduk;
}
Entity class dalam Java merupakan representasi objek dari entitas atau tabel
dalam database yang akan digunakan untuk menghubungkan data antara database dan
aplikasi yang kita buat. Setiap objek instance dari entity class mewakili satu baris
dalam tabel di database.
Setelah itu, kita buat sebuah Connection yang akan digunakan untuk
menghubungkan aplikasi yang kita buat dengan database.

Disusun Oleh : Cahendi__________________________________________________


package id.aban.sql;

import java.sql.Connection;
import java.sql.DriverManager;

public class DataSourceUtils {


private Connection con;

public Connection getConnection(){


try {
String url = "jdbc:postgresql://localhost/db_retail";
String user = "postgres";
String password = "postgres";
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection(url, user, password);
}catch(Exception ex){
ex.printStackTrace();
}
return con;
}
}

Ada beberapa point yang perlu diperhatikan saat membuat Connection, yang
pertama adalah url. Pada url terdapat bagian alamat dimana database tersebut berada, jika
database-nya di install pada komputer yang berbeda, kalian harus ubah alamatnya misalnya :
192.168.1.10 atau db.retail.com bisa menggunakan nama domain atau IP
Address. Karena database-nya di install di komputer sama, maka kita dapat menggunakan
localhost atau 127.0.0.1.
Saat kalian install postgres secara default akan mendapatkan port 5432, dan kalian
tidak perlu menambahkan port pada url-nya. Jika saat melakukan install postgres kalian
merubah port default-nya maka kalian harus mencantumkan juga port-nya,
Misalnya : localhost:7117.
Pada url terdapat db_retail, itu merupakan nama database yang akan kita
hubungkan dengan aplikasi yang kita buat.
Untuk user dan password kalian dapat menyesuaikan dengan username dan
password untuk masuk ke database-nya.

Disusun Oleh : Cahendi__________________________________________________


Buatlah sebuah interface ProdukSQL pada package sql.
package id.aban.sql;

import id.aban.entities.Produk;
import java.util.List;

public interface ProdukSQL {


public List<Produk> findAll();
public Produk findByKodeProduk(String kodeProduk);
public void create(Produk p);
public void edit(long id, Produk p);
public void deleteById(long id);
}

Buatlah sebuah class ProdukSQLImpl, class tersebut merupakan implements


dari interface ProdukSQL.
package id.aban.sql;

import id.aban.entities.Produk;
import lombok.Cleanup;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ProdukSQLImpl implements ProdukSQL {


public List<Produk> findAll() {
List<Produk> list = new ArrayList<Produk>();
try {
@Cleanup
Connection con = new DataSourceUtils().getConnection();

@Cleanup
PreparedStatement ps = con.prepareStatement(
"SELECT * FROM master_produk"
);

@Cleanup
ResultSet rs = ps.executeQuery();
Disusun Oleh : Cahendi__________________________________________________
while (rs.next()) {
list.add(Produk.builder()
.id(rs.getLong("id"))
.kodeProduk(rs.getString("kode_produk"))
.namaProduk(rs.getString("nama_produk"))
.build());
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return list;
}

public Produk findByKodeProduk(String kodeProduk) {


try {
@Cleanup
Connection con = new DataSourceUtils().getConnection();

@Cleanup
PreparedStatement ps = con.prepareStatement(
"SELECT * FROM master_produk WHERE kode_produk = ?"
);
ps.setString(1, kodeProduk);

@Cleanup
ResultSet rs = ps.executeQuery();
if (rs.next()) {
return Produk.builder()
.id(rs.getLong("id"))
.kodeProduk(rs.getString("kode_produk"))
.namaProduk(rs.getString("nama_produk"))
.build();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return Produk.builder().build();
}

public void create(Produk p) {


try {
@Cleanup
Connection con = new DataSourceUtils().getConnection();
@Cleanup
PreparedStatement ps = con.prepareStatement(

Disusun Oleh : Cahendi__________________________________________________


"INSERT INTO master_produk(kode_produk, nama_produk)
VALUES (?, ?)"
);
ps.setString(1, p.getKodeProduk());
ps.setString(2, p.getNamaProduk());
ps.executeUpdate();
} catch (SQLException ex){
ex.printStackTrace();
}
}

public void edit(long id, Produk p) {


try {
@Cleanup
Connection con = new DataSourceUtils().getConnection();
@Cleanup
PreparedStatement ps = con.prepareStatement(
"UPDATE master_produk SET kode_produk = ?, nama_produk
= ? WHERE id = ?"
);
ps.setString(1, p.getKodeProduk());
ps.setString(2, p.getNamaProduk());
ps.executeUpdate();
} catch (SQLException ex){
ex.printStackTrace();
}
}

public void deleteById(long id) {


try {
@Cleanup
Connection con = new DataSourceUtils().getConnection();
@Cleanup
PreparedStatement ps = con.prepareStatement(
"DELETE FROM master_produk WHERE id = ?"
);
ps.setLong(1, id);
ps.executeUpdate();
} catch (SQLException ex){
ex.printStackTrace();
}
}
}

Disusun Oleh : Cahendi__________________________________________________


Tahap Uji Coba
Buatlah sebuah class AppMainTest yang akan kita gunakan untuk melakukan test aplikasi
CRUD yang telah kita buat.

class AppMainTest {

private ProdukSQL sql;

@BeforeEach
void init() {
sql = new ProdukSQLImpl();
}

@Test
public void findAll() {
System.out.println("Ambil Data Semua Produk");
List<Produk> list = sql.findAll();
for (Produk p : list) {
System.out.println(p);
}
}

@Test
public void findById() {
System.out.println("Ambil Data Kode Produk = A0001");
Produk p = sql.findByKodeProduk("A0001");
System.out.println(p);
}

@Test
public void createProduk() {
System.out.println("Simpan Data Produk");
Produk p = Produk.builder()
.kodeProduk("P0023")
.namaProduk("SSD NVME")
.build();
sql.create(p);

System.out.println("Tampilkan Data Produk");


Produk produk = sql.findByKodeProduk("P0023");
System.out.println(produk);
}

Disusun Oleh : Cahendi__________________________________________________


@Test
public void updateProduk() {
System.out.println("Edit Data Produk");
Produk p = Produk.builder()
.kodeProduk("P0023")
.namaProduk("SSD NVME")
.build();
sql.edit(6, p);

System.out.println("Tampilkan Data Produk");


Produk produk = sql.findByKodeProduk("P0023");
System.out.println(produk);
}

@Test
public void deleteProduk() {
System.out.println("Hapus Data Produk");
Produk p = Produk.builder()
.kodeProduk("P0023")
.namaProduk("SSD NVME")
.build();
sql.deleteById(6);
}
}

Disusun Oleh : Cahendi__________________________________________________

Anda mungkin juga menyukai