Project Java Simple CRUD
Membuat aplikasi CRUD (Create, Read, Update, Delete) adalah salah satu proyek fundamental yang harus dikuasai oleh setiap developer Java. CRUD adalah operasi dasar yang digunakan dalam hampir semua aplikasi berbasis data, seperti sistem manajemen inventaris, aplikasi toko online, atau platform blog.
Dalam artikel ini, kita akan membahas cara membuat project Java Simple CRUD dari nol. Panduan ini dirancang untuk pemula, sehingga mudah diikuti dan dipahami. Kita akan menggunakan MySQL sebagai database dan JDBC untuk menghubungkan Java dengan database.
Apa Itu CRUD?
CRUD adalah singkatan dari empat operasi dasar yang dilakukan pada data:
- Create: Menambahkan data baru ke database.
- Read: Membaca atau mengambil data dari database.
- Update: Memperbarui data yang sudah ada.
- Delete: Menghapus data dari database.
Tools dan Teknologi yang Dibutuhkan
Berikut adalah tools dan teknologi yang akan kita gunakan:
- Java Development Kit (JDK): Untuk menulis dan menjalankan kode Java.
- MySQL: Sebagai database management system (DBMS).
- MySQL Connector/J: Driver JDBC untuk menghubungkan Java dengan MySQL.
- IDE (Integrated Development Environment): Seperti IntelliJ IDEA, Eclipse, atau NetBeans.
Langkah-Langkah Membuat Project Java Simple CRUD
Berikut adalah panduan lengkap untuk membuat aplikasi CRUD sederhana menggunakan Java dan MySQL.
1. Persiapan Proyek
- Install JDK: Pastikan JDK sudah terinstal di komputer Anda.
- Install MySQL: Unduh dan instal MySQL dari mysql.com.
- Install IDE: Pilih IDE favorit Anda, seperti IntelliJ IDEA atau Eclipse.
- Download MySQL Connector/J: Unduh driver JDBC dari MySQL Connector/J.
2. Membuat Database dan Tabel di MySQL
- Buka MySQL Command Line Client atau MySQL Workbench.
- Buat database baru dengan nama
java_crud
:CREATE DATABASE java_crud;
- Gunakan database tersebut:
USE java_crud;
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE ); Buat struktur proyek seperti berikut:
src ├── Main.java ├── User.java ├── UserDAO.java ├── GUI.java
- Tambahkan JAR ke Proyek:
- IntelliJ IDEA:
- Buka File > Project Structure > Modules > Dependencies.
- Klik tombol + dan pilih JARs or Directories.
- Pilih file JAR yang telah diunduh.
- Eclipse:
- Klik kanan pada proyek Anda di Package Explorer.
- Pilih Build Path > Configure Build Path.
- Di tab Libraries, klik Add External JARs.
- Pilih file JAR yang telah diunduh.
- NetBeans:
- Klik kanan pada proyek Anda di Projects.
- Pilih Properties > Libraries > Add JAR/Folder.
- Pilih file JAR yang telah diunduh.
Buat tabel
users
dengan struktur berikut:
- IntelliJ IDEA:
3. Kode Program
a. Class User.java
(Model Data)
public class User { private int id; private String name; private String email; // Constructor public User(String name, String email) { this.name = name; this.email = email; } // Getters and Setters public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
b. Class UserDAO.java
(Operasi Database)
import java.sql.*; import java.util.ArrayList; import java.util.List; public class UserDAO { private String jdbcURL = "jdbc:mysql://localhost:3306/java_crud"; private String jdbcUsername = "root"; // Ganti dengan username MySQL Anda private String jdbcPassword = ""; // Ganti dengan password MySQL Anda // Method untuk koneksi database protected Connection getConnection() { Connection connection = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); connection = DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword); } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } return connection; } // Method untuk Create (Insert) public void insertUser(User user) { String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; try (Connection connection = getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setString(1, user.getName()); preparedStatement.setString(2, user.getEmail()); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } // Method untuk Read (Select) public List<User> selectAllUsers() { List<User> users = new ArrayList<>(); String sql = "SELECT * FROM users"; try (Connection connection = getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { ResultSet rs = preparedStatement.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String email = rs.getString("email"); users.add(new User(name, email)); } } catch (SQLException e) { e.printStackTrace(); } return users; } // Method untuk Update public boolean updateUser(User user) { String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?"; boolean rowUpdated = false; try (Connection connection = getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setString(1, user.getName()); preparedStatement.setString(2, user.getEmail()); preparedStatement.setInt(3, user.getId()); rowUpdated = preparedStatement.executeUpdate() > 0; } catch (SQLException e) { e.printStackTrace(); } return rowUpdated; } // Method untuk Delete public boolean deleteUser(int id) { String sql = "DELETE FROM users WHERE id = ?"; boolean rowDeleted = false; try (Connection connection = getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setInt(1, id); rowDeleted = preparedStatement.executeUpdate() > 0; } catch (SQLException e) { e.printStackTrace(); } return rowDeleted; } }
c. Class GUI.java
(Antarmuka Pengguna)
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; public class GUI extends JFrame { private JTextField nameField, emailField, idField; private JTextArea outputArea; private UserDAO userDAO; public GUI() { userDAO = new UserDAO(); // Set judul dan ukuran window setTitle("Aplikasi CRUD dengan Java Swing"); setSize(500, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // Panel input JPanel inputPanel = new JPanel(new GridLayout(4, 2, 10, 10)); inputPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); inputPanel.add(new JLabel("ID (untuk Update/Delete):")); idField = new JTextField(); inputPanel.add(idField); inputPanel.add(new JLabel("Nama:")); nameField = new JTextField(); inputPanel.add(nameField); inputPanel.add(new JLabel("Email:")); emailField = new JTextField(); inputPanel.add(emailField); // Panel tombol JPanel buttonPanel = new JPanel(new GridLayout(1, 4, 10, 10)); JButton addButton = new JButton("Tambah"); JButton viewButton = new JButton("Lihat Data"); JButton updateButton = new JButton("Update"); JButton deleteButton = new JButton("Hapus"); buttonPanel.add(addButton); buttonPanel.add(viewButton); buttonPanel.add(updateButton); buttonPanel.add(deleteButton); // Area output outputArea = new JTextArea(); outputArea.setEditable(false); JScrollPane scrollPane = new JScrollPane(outputArea); // Tambahkan komponen ke frame add(inputPanel, BorderLayout.NORTH); add(buttonPanel, BorderLayout.CENTER); add(scrollPane, BorderLayout.SOUTH); // Event listener untuk tombol addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String name = nameField.getText(); String email = emailField.getText(); if (!name.isEmpty() && !email.isEmpty()) { userDAO.insertUser(new User(name, email)); outputArea.setText("User berhasil ditambahkan!"); } else { outputArea.setText("Nama dan email tidak boleh kosong!"); } } }); viewButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { List<User> users = userDAO.selectAllUsers(); StringBuilder sb = new StringBuilder(); for (User user : users) { sb.append("ID: ").append(user.getId()) .append(", Nama: ").append(user.getName()) .append(", Email: ").append(user.getEmail()).append("\n"); } outputArea.setText(sb.toString()); } }); updateButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int id = Integer.parseInt(idField.getText()); String name = nameField.getText(); String email = emailField.getText(); if (!name.isEmpty() && !email.isEmpty()) { User user = new User(name, email); user.setId(id); if (userDAO.updateUser(user)) { outputArea.setText("User berhasil diupdate!"); } else { outputArea.setText("Gagal mengupdate user."); } } else { outputArea.setText("Nama dan email tidak boleh kosong!"); } } }); deleteButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int id = Integer.parseInt(idField.getText()); if (userDAO.deleteUser(id)) { outputArea.setText("User berhasil dihapus!"); } else { outputArea.setText("Gagal menghapus user."); } } }); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new GUI().setVisible(true); } }); } }
d. Class Main.java
(Program Utama)
public class Main { public static void main(String[] args) { // Jalankan GUI GUI gui = new GUI(); gui.setVisible(true); } }
4. Menjalankan Program
- Pastikan MySQL server sedang berjalan.
- Jalankan class
Main.java
di IDE Anda. - Aplikasi GUI akan muncul, dan Anda bisa melakukan operasi CRUD melalui antarmuka yang disediakan.

Fitur GUI
- Tambah User: Masukkan nama dan email, lalu klik “Tambah”.
- Lihat Data: Klik “Lihat Data” untuk menampilkan semua user.
- Update User: Masukkan ID, nama, dan email baru, lalu klik “Update”.
- Hapus User: Masukkan ID, lalu klik “Hapus”.
Kesimpulan
Dengan menambahkan GUI menggunakan Java Swing, project Java Simple CRUD Anda menjadi lebih interaktif dan mudah digunakan. Anda bisa mengembangkan aplikasi ini lebih lanjut dengan menambahkan fitur validasi input, notifikasi, atau bahkan menggunakan JavaFX untuk tampilan yang lebih modern.