Hari ini penulis akan membahas bagaimana cara membuat aplikasi java dengan menggunakan teknik CRUD. Adapun peralatan atau aplikasi yang digunakan dalam tutorial ini adalah sebagai berikut :
Netbeans IDE versi 8.2, link unduh : ,
XAMPP versi 7.1.7, link unduh :
Apa itu CRUD ?
CRUD sendiri merupakan kepanjangan dari Create, Update, Read, dan Delete. Teknik ini dilakukan dengan cara mengeksekusi query tertentu ke database mysql.
Create, dilakukan dengan mengeksekusi query CREATE. Query ini dimaksudkan untuk menyimpan data ke dalam MySQL.
Update, dilakukan dengan mengeksekusi query UPDATE. Query ini dimaksudkan untuk melakukan perubahan data yang sudah pernah tersimpan sebelumnya di database MySQL.
Read, dilakukan dengan mengeksekusi query SELECT. Query ini dimaksudkan untuk melakukan pengambilan data dari database MySQL.
Delete, dilakukan dengan mengeksekusi query DELETE. Query ini dimaksudkan untuk menghapus salah satu atau lebih data yang sudah tersimpan dalam database MySQL.
Itulah sepintas teori mengenai apa yang dimaksud dengan CRUD.
Apa Itu Netbeans IDE ?
Netbeans IDE adalah aplikasi yang dapat digunakan dalam membangun sebuah aplikasi berbasis java. Kenapa harus menggunakan Netbeans IDE ?, hal ini dikarenakan akan Netbeans IDE memberikan kemudahan dalam membuat GUI(Graphical User Interface) untuk aplikasi Java Desktop, adapun GUI yang penulis maksud adalah penggunaan Java Swing.
Install semua aplikasi yang telah sebutkan sebelumnya. Penulis berasumsi bahwa pembaca sudah paham betul bagaimana cara menginstall aplikasi tersebut. Setelah aplikasi terinstall, jalankan apache server dan juga mysql dengan seperti dibawah ini :
GNU/Linux OS, untuk menjalankan XAMPP di OS ini dapat dilakukan dengan cara membuka terminal dan ketikkan code dibawah ini :
~$ sudo /opt/lampp/lampp start
Windows OS, untuk menjalankan XAMPP di OS ini dapat dilakukan dengan cara membukan XAMPP control panel dan klik tombol start pada Apache dan MySql. Seperti yang tampak dibawah ini :
Untuk memastikan XAMPP sudah berjalan, buka web browser favorit anda dan ketikkan ini : http://localhost/, jika memang sudah jalan maka anda akan melihat halaman berikut ini pada browser anda :
Jika memang anda sudah berhasil melihat halaman page diatas, langkah selanjutnya adalah klik phpMyAdmin pada menu page localhost tersebut :
Klik new pada navigasi page phpMyAdmin, seperti yang tampak gambar dibawah ini. Hal ini dilakukan untuk membuat database baru :
Kemudian isikan nama database menjadi rumah_coding, seperti yang tampak pada gambar dibawah ini dan klik create.
Pastikan sekarang anda dapat melihat database baru dengan nama rumah_coding pada panel navigasi phpMyAdmin. Lihat gambar dibawah ini :
Jika anda sudah database pilih database tersebut dan buat table baru dengan nama buku dan isikan jumlah kolom menjadi 5 lalu klik go, lihat gambar dibawah ini :
Selanjutnya edit masing properti kolom tersebut menjadi seperti dibawah ini :
Jika sudah, klik tombol save pada bagian kanan bawah, lihat gambar dibawah ini untuk lebih jelasnya :
Jika berhasil maka anda akan melihat sekarang database kita telah memiliki tabel baru seperti yang tampak pada gambar dibawah ini :
Kali ini penulis akan melanjutkan tutorial sebelumnya, syarat untuk mengikuti tutorial ini sudah tertera sebelumnya pada part 1 dari tutorial ini. Dan pastikan anda sudah selesai membuat database dengan nama rumah_coding serta pastikan anda sudah berhasil membuat table di database tersebut dengan nama buku. Karena pada kali ini kita akan mulai membuat aplikasi java untuk mengontrol data pada database tersebut.
1. Menyiapkan Project
Bukan aplikasi Netbeans anda dan klik File > New Project sehingga akan muncul jendela dialog seperti dibawah ini :
Pastikan anda memilih Categories Java dan pilih ProjectsJava Application seperti yang ditunjukkan pada gambar diatas lalu klik Next. Pada jendela dialog dibawah ini :
anda hanya perlu mengganti kolom isian Project Name menjadi DataManagerBuku, sementara yang lainnya bisa diabaikan. Setelah itu klik Finish.
2. Netbeans Project Structure
Folder Source Package merupakan tempat untuk menaruh file-file java yang akan dibuat nanti sedangkan folder Libraries merupakan tempat sekumpulan aplikasi jar yang sudah jadi dan akan dikombinasikan dengan program ini, yang mana nantinya akan menggunakan library JDBC Driver dari MySQL.
Dari gambar diatas project DataManagerBuku ini sudah memiliki root package dengan nama datamanagerbuku yang nantinya akan dijadikan folder utama dalam membuat aplikasi ini. Dan didalam folder ini juga sudah ada class dengan nama DataManagerBuku.java yang nantinya juga akan dijadikan sebagai class utama dari aplikasi. Artinya program ini akan mengeksekusi class ini terlebih dahulu.
3. Menambahkan Libraries Ke Project
Klik kanan pada folder Libraries lalu pilih Add Library, sehingga muncul dialog seperti dibawah ini :
Cari dan pilih MySQL JDBC Driver seperti yang tampak pada gambar diatas, kemudian klik Add Library sehingga project structure menjadi seperti dibawah ini :
4. Membuat class ConnectionHelper
Class ini nantinya akan digunakan sebagai pembantu koneksi antara aplikasi dengan database server kita, lebih khusunya dengan database yg sudah kita buat sebelumnya yaitu database rumah_coding.
Sekarang buat package baru dengan cara klik kanan pas bagian package datamanagerbuku sehingga muncul dialog seperti dibawah ini :
Isikan kolom package name menjadi database seperti apa tampak pada gambar diatas. Jika berhasil maka daftar package anda sekarang menjadi seperti dibawah ini :
Sekarang buat class baru didalam package database dan beri namanya sebagai ConnectionHelper. Perhatikan gambar dibawah ini untuk lebih jelasnya :
Buka class tersebut dan ubah codenya menjadi seperti dibawah ini :
import com.mysql.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author dika
*/
public class ConnectionHelper {
private static final String DATABASE_NAME = "rumah_coding";
private static final String USER = "root";
private static final String PASSWORD = "";
private static final String URL = "jdbc:mysql://localhost:3306/" + DATABASE_NAME;
public static Connection getConnection() throws SQLException {
DriverManager.registerDriver(new Driver());
Connection connection =
DriverManager.getConnection(URL, USER, PASSWORD);
return connection;
}
}
Penjelasan :
DATABASE_NAME adalah variabel bertipe data String yang akan menampung nama database yang akan dihubungkan.
USER adalah variabel bertipe data String yang akan menampung nama user yang akan digunakan untuk mengakses database yang akan dihubungkan. Secara default usernya adalah root.
PASSWORD adalah variabel bertipe data String yang akan menampung password yang akan digunakan untuk menghubungkan database.
Sedangkan code didalam method getConnection merupakan code untuk mendaftarkan libraries mysql driver dan membuat koneksi ke database berdasarkan setup yang telah dideklarasikan sebelumnya.
Sekarang buka class DataManagerBuku dan ubah codenya menjadi seperti dibawah ini :
import datamanagerbuku.database.ConnectionHelper;
import java.sql.SQLException;
/**
*
* @author dika
*/
public class DataManagerBuku {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
testConnection();
}
private static void testConnection() {
try {
ConnectionHelper.getConnection();
System.out.println("Database connected");
} catch (SQLException ex) {
System.out.println("Failed to connect database");
}
}
}
Kemudian run project dengan cara menekan tombol pada toolbar Netbeans IDE. Akan tetapi anda juga perlu menjalankan server apache dan mysql terlebih dahulu melalui Xampp control panel. Dan jika saat dijalankan anda dapat melihat output seperti dibawah ini :
Maka selamat anda sudah berhasil membuat koneksi ke database server.
5. Membuat Class Model
Kali ini kita akan membuat class model dengan nama Buku, dimana class ini merupakan representasi benda nyata atau object nyata yaitu buku. Data yang akan digunakan dari object buku adalah judul buku, pengarang, penerbit, dan tahun terbit. Hal ini sesuai dengan design table buku pada database kita.
Langkah pertama yang perlu dilakukan adalah membuat package baru bernama models. Cara membuat package baru sama dengan membuat package database diatas, hanya saja nama package kali ini adalah models. Berikut struktur project saat ini jika anda berhasil membuat package model :
Didalam package models buat class baru dengan nama Buku, seperti yang tampak pada gambar dibawah ini :
Kemudian edit code didalam class Buku menjadi seperti dibawah ini :
public class Buku {
private long id;
private String judulBuku;
private String penerbit;
private String pengarang;
private int tahunTerbit;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getJudulBuku() {
return judulBuku;
}
public void setJudulBuku(String judulBuku) {
this.judulBuku = judulBuku;
}
public String getPenerbit() {
return penerbit;
}
public void setPenerbit(String penerbit) {
this.penerbit = penerbit;
}
public String getPengarang() {
return pengarang;
}
public void setPengarang(String pengarang) {
this.pengarang = pengarang;
}
public int getTahunTerbit() {
return tahunTerbit;
}
public void setTahunTerbit(int tahunTerbit) {
this.tahunTerbit = tahunTerbit;
}
}
Selamat anda baru saja membuat representasi object nyata ke dalam class java. Teknik ini lebih dikenal sebagai pojo dalam java.
6. Membuat class BukuDatasource
Sekarang buatlah class baru di dalam package database dengan nama BukuDatasource. Class inilah yang akan bertanggung jawab dalam hal menyimpan data buku baru, memperbaharui data buku lama, menghapus data buku yang telah tersimpan sebelumnya dan juga mencari data buku yang sudah tersimpan sebelumnya. Jika dipersingkat maka class ini berfungsi sebagai implementasi konsep CRUD di mysql.
Jika anda sudah berhasil membuat classnya maka seharusnya sekarang terdapat 2 class didalam package database, seperti yang tampak pada gambar dibawah ini :
Sekarang edit code di dalam class BukuDatasource menjadi seperti dibawah ini :
import datamanagerbuku.models.Buku;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
/**
*
* @author dika
*/
public class BukuDatasource {
public void save(Buku buku) throws SQLException {
}
public void update(Buku buku) throws SQLException {
}
public void delete(Buku buku) throws SQLException {
}
public List<Buku> findAll() throws SQLException {
return null;
}
}
Sekarang edit code method save menjadi seperti dibawah ini :
Merupakan class java yang dapat mendukung fitur precompile query sql, artinya kita dapat menggunakan query yang sama untuk nilai parameter query yang berbeda. Contoh : Sebelum menggunakan prepare statement :
Select *from buku where id=1;
Select *from buku where id=1;
Terlihat diatas bahwa kedua query tersebut dimaksudkan untuk melakukan pencarian data buku berdasarkan id.
Kedua struktur query tersebut terlihat sama yang berbeda hanya pada nilai id-nya saja. Disinilah kegunanaan dari
prepare statement dimana kita hanya memerlukan untuk mengisi value id-nya saja tanpa menulis ulang query-nya secara
berulang-ulang. Sehingga saat menggunakan prepare statement, query-nya menjadi seperti dibawah ini :
Select *from buku where id=?;
Sekarang edit isi dari method update menjadi seperti dibawah ini :
public void update(Buku buku) throws SQLException {
String sql = "UPDATE buku SET judul=?, pengarang=?, penerbit=?, tahun_terbit=? WHERE id=?";
Connection connection = ConnectionHelper.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, buku.getJudulBuku());
preparedStatement.setString(2, buku.getPengarang());
preparedStatement.setString(3, buku.getPenerbit());
preparedStatement.setInt(4, buku.getTahunTerbit());
preparedStatement.setLong(5, buku.getId());
preparedStatement.executeUpdate();
}
Sekarang edit isi dari method delete menjadi seperti dibawah ini :
public void delete(Buku buku) throws SQLException {
String sql = "DELETE FROM buku WHERE id=?";
Connection connection = ConnectionHelper.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setLong(1, buku.getId());
preparedStatement.executeUpdate();
}
Sekarang edit isi dari method findAll menjadi seperti dibawah ini :
public List<Buku> findAll() throws SQLException {
String sql = "SELECT *FROM buku";
Connection connection = ConnectionHelper.getConnection();
ResultSet resultSet = connection.createStatement().executeQuery(sql);
List<Buku> bukuList = new ArrayList<>();
while (resultSet.next()) {
Buku buku = new Buku();
buku.setId(resultSet.getLong("id"));
buku.setJudulBuku(resultSet.getString("judul"));
buku.setPengarang(resultSet.getString("pengarang"));
buku.setPenerbit("penerbit");
buku.setTahunTerbit(resultSet.getInt("tahun_terbit"));
bukuList.add(buku);
}
return bukuList;
}
What is ResultSet ?
Merupakan class java yang menampung hasil dari query yang telah berhasil dilakukan. Mengakses data dalam ResultSet dapat dilakukan dengan menggunakan column index dan juga nama column. Sedangkan dalam method findAll diatas menggunakan nama column.
What is List ?
List merupakan interface java yang dimaksudkan untuk memiliki kemampuan menyimpan koleksi data secara dinamis. Hal ini tentu berbeda dengan array dimana koleksi data didalamnya tidaklah dinamis, artinya jumlah data dalam array bersifat tetap alias tidak dapat dimodifikasi lagi. Kesamaan antara List dan array adalah sama-sama hanya dapat menampung data yang tipe datanya sama dan setiap datanya dapat diakses melalui index serta index array dan List sama-sama dimulai dari 0.
Berbagai operasi dapat Anda lakukan terhadap ArrayList seperti berikut:
size(), untuk mencari panjang List
add(), untuk menambah elemen baru
get(), untuk mengambil elemen pada indeks tertentu
isEmpty(), untuk memeriksa apakah List kosong atau tidak
indexOf(), untuk mengetahui indeks dari suatu nilai
contains(), untuk memeriksa apakah suatu nilai ada dalam List
set(), untuk menimpa nilai pada indeks tertentu
remove(), untuk menghapus nilai pada indeks tertentu
What is ArrayList ?
ArrayList merupakan salah satu class java yang mengimplementasikan interface List. Sehingga fungsi class ini sama dengan List yaitu untuk menampung sejumlah data yang tipe datanya sama secara dinamis.