Project Java Simple CRUD: Panduan Lengkap untuk Pemula

Project Java Simple CRUD: Panduan Lengkap untuk Pemula

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:

  1. Create: Menambahkan data baru ke database.
  2. Read: Membaca atau mengambil data dari database.
  3. Update: Memperbarui data yang sudah ada.
  4. Delete: Menghapus data dari database.

Tools dan Teknologi yang Dibutuhkan

Berikut adalah tools dan teknologi yang akan kita gunakan:

  1. Java Development Kit (JDK): Untuk menulis dan menjalankan kode Java.
  2. MySQL: Sebagai database management system (DBMS).
  3. MySQL Connector/J: Driver JDBC untuk menghubungkan Java dengan MySQL.
  4. 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

  1. Install JDK: Pastikan JDK sudah terinstal di komputer Anda.
  2. Install MySQL: Unduh dan instal MySQL dari mysql.com.
  3. Install IDE: Pilih IDE favorit Anda, seperti IntelliJ IDEA atau Eclipse.
  4. Download MySQL Connector/J: Unduh driver JDBC dari MySQL Connector/J.

2. Membuat Database dan Tabel di MySQL

  1. Buka MySQL Command Line Client atau MySQL Workbench.
  2. Buat database baru dengan nama java_crud:
    sql
    CREATE DATABASE java_crud;
  3. Gunakan database tersebut:
    sql
    USE java_crud;
sql
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
  1. 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:

3. Kode Program

a. Class User.java (Model Data)

java
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)

java
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)

java
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)

java
public class Main {
    public static void main(String[] args) {
        // Jalankan GUI
        GUI gui = new GUI();
        gui.setVisible(true);
    }
}

4. Menjalankan Program

  1. Pastikan MySQL server sedang berjalan.
  2. Jalankan class Main.java di IDE Anda.
  3. Aplikasi GUI akan muncul, dan Anda bisa melakukan operasi CRUD melalui antarmuka yang disediakan.

Fitur GUI

  1. Tambah User: Masukkan nama dan email, lalu klik “Tambah”.
  2. Lihat Data: Klik “Lihat Data” untuk menampilkan semua user.
  3. Update User: Masukkan ID, nama, dan email baru, lalu klik “Update”.
  4. 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.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *