Могут ли обычные решения ORM взаимодействовать с базами данных OO? - PullRequest
2 голосов
/ 30 января 2010

Например, может ли Hibernate обрабатывать CouchDb?

Как насчет поддержки других баз данных OO в других решениях ORM?

Одним из (не очень важных) преимуществ решения ORM является возможность замены одного поставщика базы данных на другого. Что делать, если вы меняете реляционную базу данных на объектно-ориентированную?

Ответы [ 5 ]

5 голосов
/ 30 января 2010

«Как насчет поддержки других баз данных OO в других решениях ORM?»

Объектно-реляционное отображение (ORM) является решением этой проблемы.

  1. Объекты в программе.

  2. Реляционная база данных.

Если у вас нет ОБА частей (OO-программа, реляционная база данных), вы не можете использовать ORM, потому что у вас нет проблем.

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

Если вы не используете реляционную базу данных, вы не можете использовать ORM - у вас нет реляционной базы данных для сопоставления.

Нет необходимости в ORM с OODB. Там нет проблем, чтобы решить.

3 голосов
/ 30 января 2010

Насколько я понимаю (обычные предостережения здесь "могут быть неправильными"), это то, что решения ORM не работают с объектно-ориентированными базами данных, поскольку базы данных OO устраняют необходимость в решении ORM.

В целом ORM используется, чтобы помочь абстрагировать реляционную модель и отвлечь от логики кода несоответствие реляционной модели объектно-ориентированной системе. Он также позволяет использовать традиционные базы данных, которые часто требуются для продолжения работы унаследованных систем, но дает вам свободу обрабатывать отношения по принципу OO.

Абстракция - это реальная польза от использования ORM. Менять местами поставщиков баз данных не так просто, как некоторые могли бы себе представить, особенно если вы переходите с или на базу данных, такую ​​как Oracle, где в драйверах JDBC есть множество пользовательских операций и пользовательского поведения.

Другим элементом вашего вопроса является то, что вы вряд ли захотите использовать одну и ту же базовую модель базы данных от реляционной базы данных до объектно-ориентированной базы данных. Я думаю, что такой сдвиг парадигмы будет рекомендовать, если не потребует, переосмысление логики и поведения соединения базовой базовой системы.

2 голосов
/ 30 января 2010

Что если вы поменяете реляционную базу данных на объектно-ориентированную?

Я думаю, что это должно быть возможно с JDO. На самом деле, в моей памяти JDO разрабатывался и продвигался поставщиками OODMBS, и я рассматриваю этот стандарт как своего рода унифицированный способ взаимодействия с OODBMS (и генеральный план состоял из двух этапов: во-первых, Уважаемый клиент, используйте мой JDO реализация для персистентности , а затем Уважаемый клиент, замените вашу базу данных Oracle / Sybase / Wh независимо от моей базы данных Versant ).

Но я бы не стал определять JDO как «ORM», это скорее прозрачный стандарт сохраняемости объектов (который может выступать в качестве инструмента ORM, когда система хранения представляет собой реляционную базу данных R в ORM).

1 голос
/ 30 января 2010

«R» в «ORM» означает «реляционный», поэтому я не думаю, что они вообще применимы к ODBMS.

Весь смысл использования объектной базы данных состоит в том, чтобы сохранять объекты . Если они у вас есть, для чего вам нужно картирование?

Я думаю, что тот тип обмена, о котором вы говорите, достигается благодаря наличию постоянного интерфейса, независимого от реализации. Если вы можете сделать это, вы можете поменять реляционные и объектные базы данных. Может быть, что-то вроде этого:

package persistence;

import java.io.Serializable;
import java.util.List;

public interface GenericDao<T, K extends Serializable>
{
    T find(K id);
    List<T> find();
    List<T> find(T example);

    K save(T instance);
    void update(T instance);
    void delete(T instance);
}
0 голосов
/ 02 февраля 2010

Работа с JSON, в зависимости от вашего языка, проще, чем работа с экземплярами классов.

ИМХО ORM - это шаг назад от простого использования объектов сериализации JSON и отправки их в любую базу данных NoSQL, которая была достаточно умной, чтобы использовать JSON в качестве формата хранения.

...