Tentu, ini artikel tentang Tutorial Java #12: Menghubungkan Java Dengan Database.
Sebagian besar aplikasi bisnis modern memerlukan cara untuk menyimpan dan mengambil data secara persisten. Database adalah solusi utama untuk kebutuhan ini. Java menyediakan API standar yang kuat untuk berinteraksi dengan database relasional yang dikenal sebagai JDBC (Java Database Connectivity). JDBC memungkinkan Anda untuk terhubung ke berbagai jenis database (seperti MySQL, PostgreSQL, Oracle, SQL Server) menggunakan kode Java yang sama.
Dalam tutorial ini, kita akan membahas langkah-langkah dasar untuk menghubungkan aplikasi Java dengan database menggunakan JDBC. Kita akan menggunakan contoh sederhana dengan database MySQL, tetapi konsepnya berlaku umum untuk database lain.
Prasyarat:
Sebelum memulai, pastikan Anda memiliki:
- JDK (Java Development Kit) terinstal.
- Database relasional (misalnya, MySQL server berjalan).
- Driver JDBC untuk database Anda. Untuk MySQL, Anda memerlukan driver MySQL Connector/J. Anda bisa mengunduhnya dari situs web MySQL. Setelah diunduh, Anda akan mendapatkan file
.jar(misalnya,mysql-connector-j-x.x.x.jar).
Langkah 1: Menyiapkan Database dan Tabel
Untuk contoh ini, mari buat database sederhana bernama kampus dan tabel bernama mahasiswa.
-- Buat database
CREATE DATABASE kampus;
-- Gunakan database
USE kampus;
-- Buat tabel mahasiswa
CREATE TABLE mahasiswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
nim VARCHAR(20) UNIQUE NOT NULL,
jurusan VARCHAR(50)
);
-- Masukkan beberapa data contoh
INSERT INTO mahasiswa (nama, nim, jurusan) VALUES
('Andi Wijaya', '1901001', 'Teknik Informatika'),
('Budi Santoso', '1901002', 'Sistem Informasi'),
('Siti Aminah', '1901003', 'Teknik Komputer');
Pastikan Anda menjalankan skrip SQL ini di klien database Anda (misalnya, MySQL Workbench atau melalui terminal MySQL).
Langkah 2: Menambahkan Driver JDBC ke Proyek Anda
File JAR driver JDBC harus ditambahkan ke classpath proyek Java Anda.
- Jika menggunakan IDE (seperti IntelliJ IDEA, Eclipse, NetBeans): Biasanya, Anda bisa mengklik kanan pada proyek Anda, pilih “Build Path” atau “Project Structure”, dan tambahkan JAR eksternal.
- Jika kompilasi dari baris perintah: Anda perlu menyertakan
-cpatau-classpathargumen saat menjalankanjavacdanjava.
Contoh untuk kompilasi dan menjalankan dari terminal (setelah driver.jar ada di folder yang sama):
javac -cp mysql-connector-j-x.x.x.jar:. Main.java
java -cp mysql-connector-j-x.x.x.jar:. Main
Langkah 3: Menulis Kode Java untuk Koneksi Database
Sekarang, kita akan menulis kode Java untuk:
- Memuat driver JDBC.
- Membuat koneksi ke database.
- Membuat dan menjalankan pernyataan SQL.
- Memproses hasil query.
- Menutup koneksi.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
// Konfigurasi Database
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; // Untuk MySQL 8+
static final String DB_URL = "jdbc:mysql://localhost:3306/kampus"; // Sesuaikan port dan nama database
// Kredensial Database
static final String USER = "root"; // Ganti dengan username database Anda
static final String PASS = "password"; // Ganti dengan password database Anda
public static void main(String[] args) {
Connection conn = null; // Objek koneksi ke database
Statement stmt = null; // Objek untuk menjalankan perintah SQL
try {
// STEP 1: Registrasi Driver JDBC
Class.forName(JDBC_DRIVER);
// STEP 2: Buka Koneksi
System.out.println("Menghubungkan ke database...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("Koneksi berhasil!");
// STEP 3: Buat Statement
System.out.println("Membuat statement...");
stmt = conn.createStatement();
String sql;
// --- Contoh: Mengambil Data ---
System.out.println("\n--- Data Mahasiswa ---");
sql = "SELECT id, nama, nim, jurusan FROM mahasiswa";
ResultSet rs = stmt.executeQuery(sql); // Menjalankan query SELECT
// STEP 4: Memproses Hasil Query (ResultSet)
while (rs.next()) {
// Mengambil data berdasarkan nama kolom atau indeks kolom
int id = rs.getInt("id");
String nama = rs.getString("nama");
String nim = rs.getString("nim");
String jurusan = rs.getString("jurusan");
// Menampilkan hasil
System.out.println("ID: " + id + ", Nama: " + nama + ", NIM: " + nim + ", Jurusan: " + jurusan);
}
rs.close(); // Tutup ResultSet
// --- Contoh: Menambahkan Data ---
System.out.println("\n--- Menambahkan Mahasiswa Baru ---");
sql = "INSERT INTO mahasiswa (nama, nim, jurusan) VALUES ('Dewi Lestari', '1901004', 'Sistem Komputer')";
int affectedRows = stmt.executeUpdate(sql); // Menjalankan query INSERT, UPDATE, DELETE
System.out.println(affectedRows + " baris ditambahkan.");
// --- Contoh: Memperbarui Data ---
System.out.println("\n--- Memperbarui Jurusan Mahasiswa ---");
sql = "UPDATE mahasiswa SET jurusan = 'Teknik Industri' WHERE nim = '1901001'";
affectedRows = stmt.executeUpdate(sql);
System.out.println(affectedRows + " baris diperbarui.");
// --- Contoh: Menghapus Data ---
System.out.println("\n--- Menghapus Mahasiswa ---");
sql = "DELETE FROM mahasiswa WHERE nim = '1901002'";
affectedRows = stmt.executeUpdate(sql);
System.out.println(affectedRows + " baris dihapus.");
// Untuk verifikasi, ambil data lagi
System.out.println("\n--- Data Mahasiswa Terbaru ---");
sql = "SELECT id, nama, nim, jurusan FROM mahasiswa";
rs = stmt.executeQuery(sql);
while (rs.next()) {
int id = rs.getInt("id");
String nama = rs.getString("nama");
String nim = rs.getString("nim");
String jurusan = rs.getString("jurusan");
System.out.println("ID: " + id + ", Nama: " + nama + ", NIM: " + nim + ", Jurusan: " + jurusan);
}
rs.close();
} catch (SQLException se) {
// Menangani kesalahan JDBC
se.printStackTrace();
} catch (Exception e) {
// Menangani kesalahan Class.forName
e.printStackTrace();
} finally {
// STEP 5: Tutup Sumber Daya (pastikan ini selalu dijalankan)
try {
if (stmt != null) stmt.close();
} catch (SQLException se2) {
// Tidak ada yang perlu dilakukan
}
try {
if (conn != null) conn.close();
System.out.println("\nKoneksi database ditutup.");
} catch (SQLException se) {
se.printStackTrace();
}
}
}
}
Penjelasan Kode:
import java.sql.*: Mengimpor semua kelas yang diperlukan dari paketjava.sql.JDBC_DRIVER,DB_URL,USER,PASS: Konstanta untuk konfigurasi database Anda. Pastikan untuk menggantinya dengan informasi yang benar.com.mysql.cj.jdbc.Driveradalah nama kelas driver untuk MySQL 8+. Untuk versi yang lebih lama mungkincom.mysql.jdbc.Driver.jdbc:mysql://localhost:3306/kampusadalah URL koneksi.localhostbisa diganti dengan IP server database Anda.3306adalah port default MySQL.kampusadalah nama database.
Class.forName(JDBC_DRIVER): Ini memuat kelas driver JDBC ke memori. Ini adalah langkah pertama yang krusial.DriverManager.getConnection(DB_URL, USER, PASS): Membuat koneksi aktual ke database.conn.createStatement(): Membuat objekStatementyang digunakan untuk mengirimkan perintah SQL ke database.stmt.executeQuery(sql): Digunakan untuk menjalankan perintah SQLSELECT. Mengembalikan objekResultSetyang berisi baris-baris hasil.rs.next(): Memindahkan kursorResultSetke baris berikutnya. Mengembalikantruejika ada baris,falsejika tidak.rs.getInt(),rs.getString(): Mengambil nilai dari kolom saat ini dariResultSetberdasarkan tipe data.stmt.executeUpdate(sql): Digunakan untuk menjalankan perintah SQLINSERT,UPDATE, atauDELETE. Mengembalikan jumlah baris yang terpengaruh.try-catch-finally: Sangat penting untuk menanganiSQLException(kesalahan database) dan memastikan bahwa koneksi dan statement ditutup (close()) di blokfinally, bahkan jika terjadi error. Ini mencegah kebocoran sumber daya.
Kesimpulan
Menghubungkan aplikasi Java Anda dengan database menggunakan JDBC adalah keterampilan dasar yang harus dimiliki setiap pengembang Java. Dengan memahami konsep-konsep ini, Anda dapat membangun aplikasi yang mampu menyimpan dan mengelola data secara persisten, membuka pintu untuk berbagai jenis aplikasi bisnis dan enterprise.
Untuk aplikasi yang lebih kompleks, Anda mungkin ingin menjelajahi PreparedStatement (untuk keamanan SQL Injection dan kinerja), CallableStatement (untuk stored procedure), dan connection pooling (untuk manajemen koneksi yang efisien).