Java with MySQL-Mô hình DAO (Data Access Object)

Trong Java, mô hình DAO (Data Access Object) là một mô hình thiết kế phần mềm được sử dụng để tách logic xử lý cơ sở dữ liệu khỏi phần xử lý logic của ứng dụng. Mô hình DAO tách biệt quản lý cơ sở dữ liệu và truy xuất dữ liệu ra khỏi lớp DAO.

Lớp DAO cung cấp một giao diện đơn giản để truy xuất cơ sở dữ liệu mà không cần biết cách cơ sở dữ liệu được triển khai. Lớp DAO này cũng cung cấp khả năng tương tác với cơ sở dữ liệu, như truy xuất dữ liệu, cập nhật dữ liệu và xoá dữ liệu.

Ví dụ, để thêm, sửa và xoá dữ liệu trong cơ sở dữ liệu MySQL bằng Java, chúng ta có thể tạo một lớp DAO để quản lý các hoạt động này. Ví dụ về lớp DAO để thêm, sửa và xoá dữ liệu trong bảng users như sau:

public class UserDAO {
    private Connection connection;

    public UserDAO(Connection connection) {
        this.connection = connection;
    }

    public void addUser(User user) {
        try {
            PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO users(name, email, password) VALUES(?, ?, ?)");
            preparedStatement.setString(1, user.getName());
            preparedStatement.setString(2, user.getEmail());
            preparedStatement.setString(3, user.getPassword());
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void updateUser(User user) {
        try {
            PreparedStatement preparedStatement = connection.prepareStatement("UPDATE users SET name = ?, email = ?, password = ? WHERE id = ?");
            preparedStatement.setString(1, user.getName());
            preparedStatement.setString(2, user.getEmail());
            preparedStatement.setString(3, user.getPassword());
            preparedStatement.setInt(4, user.getId());
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void deleteUser(int id) {
        try {
            PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM users WHERE id = ?");
            preparedStatement.setInt(1, id);
            preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Trong ví dụ này, lớp UserDAO cung cấp các phương thức để thêm, sửa và xoá dữ liệu từ bảng users. Nó sử dụng PreparedStatement để thực hiện các truy vấn SQL và kết nối đến cơ sở dữ liệu được cung cấp qua hàm tạo của lớp.

Chúng ta có thể sử dụng lớp UserDAO để thêm, sửa và xoá người dùng bằng cách gọi các phương thức tương ứng từ lớp DAO. Ví dụ:

UserDAO userDAO = new UserDAO(connection);

// Thêm người dùng mới
User newUser = new User("John Doe", "[email protected]", "password");
userDAO.addUser