Реализация MVC и DAO - SergeiPoliakov/ResearchCenter GitHub Wiki
Модель объекта (пакет 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 и контроллер.