JPA относится только к RDBMS - PullRequest
2 голосов
/ 02 октября 2011

JPA - это постоянство данных; постоянство данных ограничено только RDBMS? если нет, то каковы все различные механизмы сохранения (например, Excel, файловая система, XML, NON RDMS и т. д.), которых мы можем достичь с помощью спецификаций JPA?

Ответы [ 4 ]

7 голосов
/ 02 октября 2011

JPA разработан для RDBMS, и, глядя на API и метаданные, вы можете видеть, что это так.Можно применить JPA к другим хранилищам данных, но для некоторых концепций необходимо сделать приближения, особенно при запросах.С другой стороны, JDO API был разработан для всех хранилищ данных, и такие аппроксимации делать не нужно.

DataNucleus была первой реализацией, предоставившей JPA для ряда других хранилищ данных(Excel, ODBMS, ODF, LDAP, BigTable, HBase, MongoDB и т. Д.) И предоставляет их в течение последних 2+ лет.Он также обеспечивает доступ JDO для тех же хранилищ данных.

5 голосов
/ 02 октября 2011

JPA - это постоянство данных; постоянство данных ограничено только RDBMS?

Да.

JPA - это структура, которая обеспечивает объектно-реляционное отображение. Относительный «R» в РСУБД.

Недавно был запущен проект (Hibernate OGM), позволяющий Hibernate взаимодействовать с базами данных типа NoSQL. Цель проекта - «предоставить общий интерфейс для хранилищ данных NoSQL с использованием конструкций JPA ». (Это не то же самое, что реализация JPA для NoSQL.) В статье, приведенной ниже, проект описывается как «возникающий»; то есть только недавно началось, не задерживай дыхание в ожидании.

Ссылки:

2 голосов
/ 03 октября 2011

JPA определяет только стандартные отображения для реляционных данных.Но многие провайдеры JPA также поддерживают нереляционные данные.Обычно это поддерживаемая сторона API, отображение обычно выполняется с помощью нестандартных метаданных.

Также существует много провайдеров JDBC, которые поддерживают JDBC API и SQL для нереляционных данных иисточники данных, которые будут работать с любым провайдером JPA.Как правило, это лучшее решение для доступа к нереляционным данным.

Не существует стандарта для сопоставления с нереляционными данными, поскольку нереляционные данные охватывают широкий диапазон форматов данных и по определению не являютсястандарт.Стандарт Java Connector Architecture (JCA) является стандартом Java для доступа к нереляционным данным.Однако большинство нереляционных адаптеров предоставляют драйверы JDBC вместо драйверов JCA, поскольку использование JDBC более распространено.

См., http://en.wikibooks.org/wiki/Java_Persistence/Databases#EIS.2C_and_Non-relational_Data_Sources

EclipseLink поддерживает несколько сервисов персистентности, включая:

  • JPA
  • EIS (корпоративные информационные системы) нереляционные источники данных через соединители JCA
  • JAXB (отображение данных XML)
  • DBWS (веб-службы базы данных))
  • SDO (объекты данных службы)
0 голосов
/ 02 октября 2011

Java Persistence API имеет дело со способом, которым реляционные данные отображаются на объекты Java («постоянные сущности»), способом, которым эти объекты хранятся в реляционной базе данных, чтобы к ним можно было получить доступ позже,и продолжающееся существование состояния объекта даже после того, как приложение, которое его использует, заканчивается.Помимо упрощения модели персистентности сущности, API персистентности Java стандартизирует объектно-реляционное отображение.

Здесь взяты квоты: http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html

Вскоре да.JPA посвящен отображению Java-объектов в реляционные БД.

Есть ли способ «злоупотребить» API и создать реализацию, которая отображает объекты на другие цели, такие как NOSQL?Я считаю, что это возможно, но не очень просто.Как, например, вы реализуете поддержку реляционных аннотаций, таких как @OneToMany?

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