Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая. Разработка серверной части сайта Электронный книжный магазин.docx
Скачиваний:
0
Добавлен:
02.01.2026
Размер:
1.94 Mб
Скачать

2. Методы:

2.1. Операции чтения:

  • List<Book> getAllBooks() – извлекает все книги из базы данных и возвращает их в виде списка объектов Book

    • Логика работы: выполняет SELECT * FROM books, преобразует каждый ряд ResultSet в объект Book,

    • Обработка ошибок: ловит SQLException, логирует ошибку, возвращает пустой список при сбое.

2.2. Операции обновления:

  • boolean decreaseBookQuantity(int bookId, int quantity) – уменьшает количество книги на складе на указанное значение

    • Логика работы: выполняет UPDATE books SET quantity = quantity - ? WHERE id = ? AND quantity >= ?,

    • Безопасность: проверяет, что после уменьшения количество не станет отрицательным,

    • Возвращаемое значение: true если обновление успешно, false при ошибке или недостаточном количестве.

2.3. Вспомогательные методы:

  • private Book mapResultSetToBook(ResultSet rs) – преобразует строку ResultSet в объект Book

    • Назначение: устраняет дублирование кода при маппинге данных,

    • Обработка данных: корректно конвертирует типы SQL в типы Java.

5.2.2. Класс UserDao

Назначение: Класс UserDao управляет операциями с таблицей пользователей, обеспечивая аутентификацию, регистрацию и валидацию учётных данных.

1. Поля:

  • private static final String FIND_USER_SQL – SQL запрос поиска пользователя по имени,

  • private static final String REGISTER_USER_SQL – SQL запрос добавления нового пользователя.

2. Методы:

2.1. Операции аутентификации:

  • User findUserByUsername(String username) – находит пользователя по имени в базе данных

    • Логика работы: выполняет SELECT * FROM users WHERE username = ?,

    • Возвращаемое значение: Объект User или null если пользователь не найден,

    • Безопасность: использует PreparedStatement для защиты от SQL-инъекций.

2.2. Операции регистрации:

  • boolean registerUser(User user) – добавляет нового пользователя в систему

    • Логика работы: выполняет INSERT INTO users (username, password, email) VALUES (?, ?, ?),

    • Валидация: проверяет уникальность имени пользователя перед вставкой,

    • Возвращаемое значение: true при успешной регистрации, false при ошибке.

2.3. Валидация данных:

  • boolean validatePassword(String plainPassword, String hashedPassword) – сравнивает введённый пароль с сохранённым

    • Текущая реализация: Прямое сравнение строк (для учебных целей),

    • Рекомендуемое улучшение: Использование B Crypt.checkpw() для безопасного сравнения хешей.

5.2.3. Класс CartDao

Назначение: Класс CartDao управляет всеми операциями, связанными с корзиной покупок, включая добавление товаров, изменение количества и очистку корзины.

1. Поля:

  • private static final String GET_CART_ITEMS_SQL – SQL запрос с JOIN для получения корзины с информацией о книгах,

  • private static final String ADD_TO_CART_SQL – SQL запрос добавления товара в корзину,

  • private static final String REMOVE_FROM_CART_SQL – SQL запрос удаления товара из корзины.