Есть ли какие-либо преимущества для использования ORDBMS вместо RDBMS позади JPA

Сегодня я рассмотрел вики postgreSQL и обнаружил, что это ORDBMS (система управления объектно-реляционными базами данных), поэтому я хочу знать, есть ли какие-либо преимущества использования postgreSql (RDBMS) за JPA (hibernate, eclipselink, ....) вместо этого СУБД (Mysql, ...) для проблем с производительностью или нет?

Как вы знаете, JPA использует ORM и использует JQL (язык запросов Java)

С уважением

3 ответа

Решение

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

ИЛИ типы данных включают в себя:

  • Структуры - структурированные типы
  • Массивы - типы массивов

Эти типы определяются по-разному в каждой базе данных, в Oracle это типы OBJECT, VARRAY, NESTED TABLE и REF.

JDBC стандартизирует доступ к типам данных OR, используя интерфейсы Struct, Array и Ref.

С типами данных OR вы можете иметь более сложные схемы базы данных, такие как TABLE of Employee_Type, который имеет Varray of Phone_Types и менеджер Ref to it.

JPA не имеет прямой поддержки для отображения или типов данных, но некоторые поставщики делают.

EclipseLink поддерживает отображение типов данных OR, включая Structs, Ref и Arrays. Пользовательские сопоставления и аннотации используются для их сопоставления, но API JPA времени выполнения такой же.

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

См. http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics

Я бы сказал нет. JPA нацелен на RDBMS и не использует дополнительные возможности, предлагаемые ORDBMS.

PostgreSQL также является очень хорошей СУБД (вы не обязаны использовать ее объектно-ориентированные функции, и я предполагаю, что большинство ее пользователей этого не делают), и вы можете использовать ее с JPA без проблем.

JPA является переводчиком между "мышлением в объектах" (Java) и "мышлением в отношениях" (SQL). Поэтому реализация JPA всегда будет говорить с БД с точки зрения отношений. "Объектно-реляционный" материал здесь игнорируется.

Игнорирование JPA и прямой разговор с БД в "ORDBMS" не принесут вам пользы в производительности в большинстве распространенных случаев, потому что ORDBMS все еще являются RDBMS с некоторой связующей логикой, чтобы выглядеть немного стильно. Данные хранятся в отношениях, все пути доступа такие же, как чистый путь реляционного доступа.

Если вы действительно хотите увидеть преимущества в производительности, переключаясь не только на продукт базы данных, но и на технологию базы данных (или философию), вам следует взглянуть на реальные объектные базы данных или даже NoSQL.

Другие вопросы по тегам