DATABASE CURD JAVA
CRUD adalah akronim untuk Create, Read, Update, dan Delete. Operasi CRUD adalah manipulasi data dasar untuk database.
Dalam pemrograman komputer , membuat, membaca, memperbarui, dan menghapus [1] ( CRUD ) adalah empat fungsi dasar penyimpanan persisten . [2] Kata-kata alternatif kadang-kadang digunakan saat mendefinisikan empat fungsi dasar CRUD , seperti mengambil alih-alih membaca , mengubah alih-alih memperbarui , atau menghancurkan alih-alih menghapus . CRUD juga terkadang digunakan untuk menggambarkan konvensi antarmuka pengguna yang memfasilitasi tampilan, pencarian, dan perubahan informasi ; sering menggunakan formulir dan laporan berbasis komputer. Istilah ini kemungkinan pertama kali dipopulerkan oleh James Martin dalam bukunya 1983 Mengelola Lingkungan Data-base . [1] [3] Akronim ini dapat diperluas ke CRUDL untuk mencakup daftar set data besar yang membawa kompleksitas tambahan seperti pagination ketika set data terlalu besar untuk dengan mudah disimpan dalam memori.
CRUD (Create, Read, Update Delete) adalah fitur dasar
yang harus kita buat saat bekerja dengan database.
Berikut ini daftar pekerjaannya…
TODO:
1. Method __construct()
Method __construct()
merupakan sebuah konstruktor.
Method ini yang akan dieksekusi pertama kali saat
Controller diakses.Pada method ini, kita melakukan load model (
porduct_model
) dan library
(form_validation
).
2. Method index()
Pada method ini, kita akan mengambil data dari model
dengan memanggil method product_model->getAll()
.
3. Method add()
Method ini bertugas untuk menampilkan form add dan
menyimpan data ke database. Tentunya dengan memanggil
method save()
yang ada pada model.Namun, sebelum memanggil method
save()
, kita
lakukan validasi terlebih dahulu dengan
mengeksekusi method run()
pada objek $validation
.
4. Method edit()
Hampir sama dengan method add()
, method edit()
juga
bertugas untuk menampilkan form dan menyimpan data.
5. Method delete()
Method delete()
befungsi untuk menangni penghapusan data.Prinsipnya hampir sama seperti method
edit()
, method delete()
juga membutuhkan $id
untuk menentukan data mana yang akan dihapus.Tahap pertama adalah membuat project baru :
1. Buka projek baru dengan cara klik file => New Project
2. Pilih katagori: java dan project: java application.
3. Berikan nama project: sesuai dengan kebutuhan dan jangan lupa jangan lupa centang create main project lalu finish.
CREATE(INSERT)
Untuk Create, masukkan coding berikut ke dalam class Main
Untuk Create, masukkan coding berikut ke dalam class Main
package
org.jaco.hibernate;
import
java.util.Scanner;
import
org.hibernate.Session;
import
org.hibernate.cfg.Configuration;
public
class
Main {
public
static
void
main(String[] args) {
// Buat Session untuk Koneksi Database
Session s =
new
Configuration().configure().buildSessionFactory().openSession();
// Buat Objek dari class Users
Users user =
new
Users();
// Pilih jenis operasi CRUD
System.out.println(
"Pilih Operasi 1CRUD"
);
System.out.println(
"1. Create"
);
System.out.println(
"2. Read"
);
System.out.println(
"3. Update"
);
System.out.println(
"4. Delete"
);
System.out.print(
"Pilihan : "
);
int
pilih =
new
Scanner(System.in).nextInt();
switch
(pilih)
{
case
1
:
// Create(Insert SQL)
// set nilai untuk objek user
// user.setID(null) nggak perlu dibuat karena, Auto_Increment
user.setNama(
"Yudi"
);
try
{
// Mulai Koneksi
s.beginTransaction();
// Simpan Objek User ke Session
s.save(user);
// execute Session ke MySQL
s.getTransaction().commit();
}
catch
(Exception e)
{
e.printStackTrace();
}
break
;
default
: System.out.println(
"Pilihan tidak tersedia"
);
}
}
}
Contoh Kasus:
package pemilu;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class Create extends javax.swing.JFrame {
/** Creates new form Create */
public Create() {
initComponents();
}
@SuppressWarnings("unchecked")
/** Creates new form Create */
public Create() {
initComponents();
}
@SuppressWarnings("unchecked")
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String capres = String.valueOf(jTextField1.getText());
String cawapres = String.valueOf(jTextField2.getText());
String slogan = String.valueOf(jTextArea1.getText());
if (capres.equals("")) {
JOptionPane.showMessageDialog(null, "Anda Belum Mengisi Nama Capres!", "Input Data Status", 1);
} else if (cawapres.equals("")) {
JOptionPane.showMessageDialog(null, "Anda Belum Mengisi Nama CaWapres!", "Input Data Status", 1);
} else if (slogan.equals("")) {
JOptionPane.showMessageDialog(null, "Anda Belum Mengisi Slogan!", "Input Data Status", 1);
} else { // jika data tidak ada yang kosong.
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/pemilu", "root", "");
Statement st = conn.createStatement();
String query = "INSERT INTO daftar_peserta VALUES (null,'" + capres + "','" + cawapres + "','" + slogan + "')";
// harus diberi null, karena di database nya , kolom id itu AUTO INCREEMENT. null berarti tidak ada data yang masuk ke tabel
st.executeUpdate(query);
JOptionPane.showMessageDialog(null, "Data Berhasil Tersimpan!", "Input Data Status", 1);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Terjadi Kesalahan! Periksa Kembali Data Anda! "+ex, "Input Data Status", 0);
}
}
}
String capres = String.valueOf(jTextField1.getText());
String cawapres = String.valueOf(jTextField2.getText());
String slogan = String.valueOf(jTextArea1.getText());
if (capres.equals("")) {
JOptionPane.showMessageDialog(null, "Anda Belum Mengisi Nama Capres!", "Input Data Status", 1);
} else if (cawapres.equals("")) {
JOptionPane.showMessageDialog(null, "Anda Belum Mengisi Nama CaWapres!", "Input Data Status", 1);
} else if (slogan.equals("")) {
JOptionPane.showMessageDialog(null, "Anda Belum Mengisi Slogan!", "Input Data Status", 1);
} else { // jika data tidak ada yang kosong.
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/pemilu", "root", "");
Statement st = conn.createStatement();
String query = "INSERT INTO daftar_peserta VALUES (null,'" + capres + "','" + cawapres + "','" + slogan + "')";
// harus diberi null, karena di database nya , kolom id itu AUTO INCREEMENT. null berarti tidak ada data yang masuk ke tabel
st.executeUpdate(query);
JOptionPane.showMessageDialog(null, "Data Berhasil Tersimpan!", "Input Data Status", 1);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Terjadi Kesalahan! Periksa Kembali Data Anda! "+ex, "Input Data Status", 0);
}
}
}
READ(SELECT)
Untuk Read, tambahkan coding berikut ke dalam file Main.class.
case
2
:
// Read(Select SQL)
s.beginTransaction();
for
(Users us :getAllUsers())
{
System.out.println(us);
}
break
;
// Method untuk select all from table
public
static
List<Users> getAllUsers()
{
List<Users> list =
null
;
Session session =
new
Configuration().configure().buildSessionFactory().openSession();
try
{
session.beginTransaction();
Query query = session.createQuery(
"from org.jaco.hibernate.Users"
);
list = query.list();
return
list;
}
catch
(Exception e)
{
e.printStackTrace();
return
null
;
}
}
Contoh Kasus :
package pemilu;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class Read extends javax.swing.JFrame {
/** Creates new form Read */
public Read() {
initComponents();
data(); // ini berfungsi untuk memanggil method yang memanggil data pada database
}
@SuppressWarnings("unchecked")
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"CaPres", "CaWapres", "Slogan"
}
));
jScrollPane1.setViewportView(jTable1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 452, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(14, Short.MAX_VALUE))
);
pack();
}
public void data() { try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/pemilu", "root", "");
String query2 = "SELECT * FROM daftar_peserta";
Statement st2 = conn.createStatement();
ResultSet rs2 = st2.executeQuery(query2);
DefaultTableModel tm = (DefaultTableModel) jTable1.getModel();
tm.setRowCount(0);
while (rs2.next()) {
String capress = rs2.getString("capres");
String cawapress = rs2.getString("cawapres");
String slogann = rs2.getString("slogan");
tm.addRow(new Object[]{capress, cawapress, slogann});
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Terjadi Kesalahan! Periksa Kembali Data Anda!", "Input Data Status", 0);
}
}
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
}
/** Creates new form Read */
public Read() {
initComponents();
data(); // ini berfungsi untuk memanggil method yang memanggil data pada database
}
@SuppressWarnings("unchecked")
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"CaPres", "CaWapres", "Slogan"
}
));
jScrollPane1.setViewportView(jTable1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 452, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(14, Short.MAX_VALUE))
);
pack();
}
public void data() { try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/pemilu", "root", "");
String query2 = "SELECT * FROM daftar_peserta";
Statement st2 = conn.createStatement();
ResultSet rs2 = st2.executeQuery(query2);
DefaultTableModel tm = (DefaultTableModel) jTable1.getModel();
tm.setRowCount(0);
while (rs2.next()) {
String capress = rs2.getString("capres");
String cawapress = rs2.getString("cawapres");
String slogann = rs2.getString("slogan");
tm.addRow(new Object[]{capress, cawapress, slogann});
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Terjadi Kesalahan! Periksa Kembali Data Anda!", "Input Data Status", 0);
}
}
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
}
UPDATE
Untuk update, tambahkan coding berikut ke dalam file Main.class.
Untuk update, tambahkan coding berikut ke dalam file Main.class.
case
3
:
// Update(Update SQL)
s.beginTransaction();
// Set Query SQL
Query query = s.createQuery(
"update org.jaco.hibernate.Users set nama = :nama where id = :id"
);
query.setParameter(
"nama"
,
"Setiawan"
);
query.setParameter(
"id"
,
1
);
int
exec = query.executeUpdate();
s.getTransaction().commit();
break
;
DELETE(DELETE SQL)
Untuk yang terakhir Delete, tambahkan coding berikut ke dalam file Main.class
Untuk yang terakhir Delete, tambahkan coding berikut ke dalam file Main.class
case
4
:
// Delete(Delete SQL)
s.beginTransaction();
// Set Query SQL
query = s.createQuery(
"delete from org.jaco.hibernate.Users where id = :id"
);
query.setParameter(
"id"
,
1
);
exec = query.executeUpdate();
s.getTransaction().commit();
break
;