Каков наилучший способ преобразования реляционных в объектно-ориентированные? - PullRequest
1 голос
/ 09 февраля 2011

С тех пор, как я узнал о RDBMS, я начал думать в реляционной модели, а не в объектно-ориентированной. Теперь у меня возникают проблемы при попытке сохранить и запросить данные в структурах данных Java.

Я хочу написать приложение, у которого есть наборы сущностей, которые связаны друг с другом, поэтому я сделал каждую сущность своим собственным классом. Атрибуты для каждого объекта являются переменными экземпляра. Хорошо, я думаю, что у нас все хорошо. Title и Game - все сущности. Game ISA Title, поэтому Title должен быть родительским классом, а Game должен наследоваться от Title (воспринимайте Game как физическую копию, а Title как название игры).

У меня есть набор игр в моем основном классе, и я могу повторить, если я хочу найти определенную Игру. Как мне найти конкретный заголовок? У меня нет набора заголовков, потому что заголовок унаследован, поэтому я предполагаю, что мне нужно просто пройтись по играм, а когда я найду название заголовка, добавлю его в набор, чтобы я получал только уникальные заголовки.

Игра изменчива (isBought может измениться), так что использование Set - плохая идея? Каков наилучший способ создания наборов сущностей в Java? Использование карты вместо набора для сопоставления идентификатора с объектом?

Ответы [ 2 ]

5 голосов
/ 09 февраля 2011

Исправление объектно-реляционного разрыва - задача не из легких. Существуют платформы ORM (объектно-реляционное отображение), которые делают это. Но у них есть некоторая кривая обучения. Hibernate и EclipseLink являются двумя реализациями стандарта ORM в Java - JPA (API персистентности Java).

2 голосов
/ 17 февраля 2011

Между реляционными и ОО-моделями нет принципиального разрыва. Реляционная модель данных - это система типов, которая поддерживает типы отношений и операторы отношений (а также другие типы). Модель данных OO - это система типов, которая поддерживает наследование.

Ошибка, которую люди часто делают при рассмотрении этих парадигм, состоит в том, чтобы приравнивать типы (классы) в терминах ОО к отношениям или кортежам в реляционной модели. Свидание и Дарвен называют это Первый большой промах . Реальность намного проще, чем это. Типы - это типы, как в реляционной модели, так и в модели ОО. Две парадигмы ортогональны и дополняют друг друга, они не являются взаимоисключающими.

То, что на самом деле сильно раскритиковало несоответствие OO / RM, заключается в том, что программист хочет реализовать определенные шаблоны преобразований, которые его программные инструменты не могут легко поддерживать. Реляционная модель не виновата. Производители программного обеспечения.

...