ORM дизайн без Hibernate Требуется помощь - PullRequest
0 голосов
/ 03 февраля 2020

Я работаю над своим первым проектом для домашних животных, и моя цель - проанализировать локальные рабочие места и сохранить соответствующие позиции в RDB. Поэтому я не буду касаться Hibernate, пока не создам версию JDB C. Моя модель базы данных довольно проста: первая (основная) таблица 'Позиции' с ее идентификатором в качестве внешнего ключа для второй, называемой 'Навыки'. Они соотносятся как «один ко многим».

Мой главный вопрос заключается в создании подходящего дизайна архитектуры кода. Из-за отсутствия опыта в шаблонах я мог пропустить некоторые концепции.
Мои мысли:
1) Вариант для создания одного класса для вакансий и один для набора навыков, чем мы сопоставляем оба объекта в базе данных;
2) Вариант с агрегацией: создание набора навыков внутри одного класса «Вакансия», затем сопоставление его с двумя таблицами;
3) ..?

1 Ответ

0 голосов
/ 07 февраля 2020

Допустим, у нас есть Положение сущности и Навык. Отношения между ними должны быть IMO многие-ко-многим, потому что для разных позиций может потребоваться один навык, а для одной позиции может потребоваться несколько навыков. Это означает, что на уровне базы данных вам потребуются 3 таблицы: позиции, навыки и position_skill (которые будут служить промежуточной таблицей между первыми двумя).

На уровне кода вам потребуются классы сущностей Position и Skill, связанные Отношение "has-a": класс Position содержит набор навыков внутри.

Чем вам понадобятся классы репозитория (DAO), которые будут отвечать за извлечение сущностей из базы данных. При использовании простого JDB C вы должны реализовать методы для операций CRUD (создание, чтение, обновление, удаление) для обеих сущностей. Сопоставление ResultSet с классом сущностей может быть реализовано либо в классах репозитория, либо в отдельных классах сопоставления (в качестве параметра возвращается экземпляр Position или Skill ResultSet) Сложной задачей (без использования каркасов) будет внедрение разбиения на страницы с поддержкой фильтрации и сортировки.

Чем вам понадобятся классы обслуживания, которые должны реализовывать бизнес-логику c, когда вы решите ее добавить.

Если вы реализуете веб-приложение или REST- / Web-сервисы, вам потребуются классы контроллеров, которые будут обрабатывать HTTP-запросы.

Цепочка событий выглядит следующим образом: клиентские вызовы контроллер, контроллер вызывает службу, хранилище вызовов службы, которая извлекает данные из базы данных. Эта многоуровневая структура используется во многих приложениях и может быть реализована простым java с использованием синглетонов или с использованием каркасов Spring / java EE.

Удачи.

...