Как использовать интерфейс DAO?

Интерфейс DAO (Data Access Object) является одним из основных компонентов приложения, используемым для доступа и взаимодействия с базой данных. DAO инкапсулирует логику работы с данными и предоставляет абстрактный интерфейс, позволяющий получать, создавать, обновлять и удалять объекты из базы данных.

Для использования интерфейса DAO в Java, вам необходимо выполнить следующие шаги:

Шаг 1: Определите интерфейс DAO

Создайте интерфейс, который будет определять методы для взаимодействия с базой данных. Например:

public interface UserDao {
    User findById(int id);
    List<User> findAll();
    void save(User user);
    void update(User user);
    void delete(User user);
}

Шаг 2: Реализуйте интерфейс DAO

Создайте класс, который будет реализовывать интерфейс DAO. В этом классе вы должны реализовать логику выполнения операций с базой данных. Например, если вы используете реляционную базу данных, то вы можете использовать JDBC (Java Database Connectivity) для взаимодействия с ней. Вот пример реализации DAO для работы с базой данных MySQL с использованием JDBC:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserDaoImpl implements UserDao {
    private Connection connection;

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

    @Override
    public User findById(int id) {
        User user = null;
        try {
            PreparedStatement statement = connection.prepareStatement("SELECT * FROM users WHERE id = ?");
            statement.setInt(1, id);

            ResultSet resultSet = statement.executeQuery();
            if (resultSet.next()) {
                user = new User(resultSet.getInt("id"), resultSet.getString("name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return user;
    }

    @Override
    public List<User> findAll() {
        List<User> users = new ArrayList<>();
        try {
            PreparedStatement statement = connection.prepareStatement("SELECT * FROM users");

            ResultSet resultSet = statement.executeQuery();
            while (resultSet.next()) {
                User user = new User(resultSet.getInt("id"), resultSet.getString("name"));
                users.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return users;
    }

    @Override
    public void save(User user) {
        try {
            PreparedStatement statement = connection.prepareStatement("INSERT INTO users (id, name) VALUES (?, ?)");
            statement.setInt(1, user.getId());
            statement.setString(2, user.getName());

            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void update(User user) {
        try {
            PreparedStatement statement = connection.prepareStatement("UPDATE users SET name = ? WHERE id = ?");
            statement.setString(1, user.getName());
            statement.setInt(2, user.getId());

            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void delete(User user) {
        try {
            PreparedStatement statement = connection.prepareStatement("DELETE FROM users WHERE id = ?");
            statement.setInt(1, user.getId());

            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Шаг 3: Используйте DAO в вашем приложении

Теперь вы можете использовать DAO для выполнения операций с базой данных в вашем приложении. Например:

public class Main {
    public static void main(String[] args) {
        // создание подключения к базе данных
        Connection connection = ...
        
        // создание экземпляра DAO
        UserDao userDao = new UserDaoImpl(connection);
        
        // использование DAO для получения объектов из базы данных
        User user = userDao.findById(1);
        List<User> users = userDao.findAll();
        
        // использование DAO для создания, обновления и удаления объектов
        User newUser = new User(2, "John");
        userDao.save(newUser);
        
        user.setName("Jane");
        userDao.update(user);
        
        userDao.delete(user);
        
        // закрытие подключения к базе данных
        connection.close();
    }
}

Надеюсь, эта подробная информация поможет вам понять, как использовать интерфейс DAO в Java.