Реализация MVC и DAO - SergeiPoliakov/ResearchCenter GitHub Wiki

Реализация MVC и DAO

Модель объекта (пакет com.unc2016.mvc.models.*) относится к конкретной таблице БД и содержит поля, соответствующие каждой колонке из его таблицы:

  • UserModel - объект таблицы PJ_USERS;
  • AttributeModel - объект таблицы PJ_ATTRIBUTES;
  • CaseModel - объект таблицы FIN_OBJECTS;
  • CaseTypeModel - объект таблицы FIN_OBJECT_TYPES;
  • ParameterModel - объект таблицы PARAMS;
  • TransactionModel - объект таблицы TRANSACTIONS.

Манипуляции с объектом происходят с помощью сеттеров и геттеров для каждой колонки соответствующей таблицы (названия методов заканчиваются названиями колонок).

DAO классы (пакет com.netcracker.unc.mvc.dao.*) необходимы для взаимодействия моделей с БД. Основное их применение - это добавление, обновление и удаление записей в базе данных, а также получение готовой модели из таблицы. Каждый класс DAO (UserDAO, CaseDAO, ParameterDAO и т.д.) работает с определенным классом модели (см. название класса DAO) и наследует абстрактный класс ObjectDAO, в котором заданы основные методы взаимодействия с БД:

  • public abstract List getAllObjectsDB(); (получает все объекты из БД)
  • public abstract void addObject(Object object); (добавляет объект в БД)
  • public abstract Object getObject(Object object); (получает объект из БД)
  • public abstract void updateObject(Object object); (обновляет объект в БД)
  • public abstract void deleteObject(Object object); (удаляет объект из БД)

В качестве параметров в методы посылаются объекты моделей, соответствующие данному DAO классу. Чтобы сформировать модель из БД, необходимо создать объект класса модели и определить его поле "id" (для Parameter "object_id или "attribute_id) или поле "name" или "login" (действует для моделей классов User, CaseType, Attribute), после чего послать этот объект в метод getObject(). Метод возвращает полностью готовый объект модели, соответствующую строке таблицы. Методы update() и delete() работают только по "id" модели. Следует учесть, что каждый DAO использует синглтон доступа к БД.

Чтобы выполнять различные алгоритмы с использованием запросов, существует класс ObjectController (пакет com.netcracker.unc.mvc.*). В своей основе он подразумевает использование DAO в сочетании с различными алгоритмами для достижения конкретных задач какого-либо модуля веб-приложения. Как примеры использования — проверка логина и пароля пользователя, расчет общего количества задач, получение общей суммы затрат за определенный период времени и т.д.

Для более удобного ориентирования в запросах, посылаемых к БД, существует статический класс констант SQLQuery (пакет com.netcracker.unc.mvc.*). В нем определены все запросы к БД, которые будут использовать DAO и контроллер.

⚠️ **GitHub.com Fallback** ⚠️