Лучший принцип проектирования в Java при извлечении данных из нескольких таблиц - PullRequest
2 голосов
/ 25 декабря 2010

Рассмотрим следующую ситуацию. У меня есть 3 таблицы в проекте планирования ресурсов (создан с использованием MySQL)

  1. raw_materials (хранит информацию обо всем сырье)

  2. procurement_orders (хранит подробную информацию обо всех деталях запросов, отправленных поставщикам для отправки нам котировок. Эта таблица ссылается на таблицу raw_materials.)

  3. предложения (содержит сведения обо всех предложениях, отправленных нам поставщиками. Эта таблица ссылается на таблицу procurement_orders).

Я создал dbManager для каждого из них, используя java, которые специализируются на хранении, извлечении, удалении данных из соответствующих таблиц.

У меня вопрос: если я хочу получить данные, для которых нужны данные из других таблиц, каков наилучший способ сделать это? Например: я хочу, чтобы котировки всех raw_materials имели запас ниже x. тогда, по мне, есть два пути

  1. Я пишу это в dbManager для rawMaterials. Недостаток этого метода в том, что он пытается получить доступ к данным вне своего домена.
  2. в dbManager of raw_Materials создает экземпляры других dbManager. Недостаток здесь итераций будет большой. Как и в случае, если есть 300 сырья, мне придется вызывать метод dbManager procurement_request 300 раз. Если он возвращает несколько значений, нам снова придется вызывать dbMnager, а котировок много нет. раз (многие из них будут нежелательны), влияющих на производительность.

У меня вопрос, как лучше спроектировать его надлежащим образом, не снижая производительность.

1 Ответ

3 голосов
/ 25 декабря 2010

Это довольно большой вопрос, который может быть легко решен быстро, но выравнивание классов Java по таблицам не обязательно является хорошим подходом, потому что, как вы заметили, некоторые вещи естественным образом включают несколько таблиц в сложные отношения.

Я бы рекомендовал начать с просмотра книги Мартина Фаулера Шаблоны архитектуры корпоративных приложений .

Patterns of Enterprise Application Architecture.

На этой странице .

также есть некоторые примечания по шаблонам в этой книге.

Ваше использование больше всего похоже на Таблица данных Шлюз . Следуя этому шаблону, было бы совершенно разумно иметь методы в каждом из ваших классов dbManager, которые извлекают данные из связанной с ним таблицы, но включают другую таблицу как часть предложения where.

Возможно, вы также захотите рассмотреть объектно-реляционное отображение , реализованное, например, Hibernate .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...