#postgresql #jpa #orm #rdbms
#postgresql #jpa #orm #rdbms
Вопрос:
Сегодня я просмотрел PostgreSQL wiki и обнаружил, что это ORDBMS (объектно-реляционная система управления базами данных), поэтому я хочу знать, есть ли какие-либо преимущества для использования PostgreSQL (RDBMS) за JPA (hibernate, eclipselink, ….) вместо RDBMS (Mysql, …) для повышения производительностипроблемы или нет?
Как вы знаете, JPA использует ORM и использует JQL (язык запросов Java)
С уважением
Комментарии:
1. См. Также: Несоответствие объектно-реляционного импеданса
Ответ №1:
Объектно-реляционные данные определяются как структурированные данные, которые являются определяемыми пользователем типами в базе данных.
ИЛИ типы данных включают:
- Структуры — структурированные типы
- Массивы — типы массивов
Эти типы определяются по-разному в каждой базе данных, в Oracle это типы объектов, типы VARRAY и ВЛОЖЕННЫЕ ТАБЛИЦЫ, а также типы ССЫЛОК.
JDBC стандартизирует доступ к типам данных OR с использованием интерфейсов Struct, Array и Ref.
С типами данных ИЛИ у вас могут быть более сложные схемы базы данных, такие как ТАБЛИЦА Employee_Type, которая имеет набор Phone_Types и ссылку на it manager.
JPA не имеет прямой поддержки сопоставления ИЛИ типов данных, но у некоторых поставщиков есть.
EclipseLink поддерживает отображение ИЛИ типы данных, включая структуры, ссылки и массивы. Для их сопоставления используются пользовательские сопоставления и аннотации, но API JPA во время выполнения остается тем же.
Обычно я бы не рекомендовал использовать типы данных OR, поскольку они менее стандартны, чем традиционные реляционные таблицы, и не дают большой пользы. Некоторые определенные базы данных ИЛИ типы данных, такие как пространственные типы данных, имеют преимущества, поскольку они имеют встроенную поддержку базы данных.
Ответ №2:
Я бы сказал, нет. JPA ориентирован на RDBMS и не использует дополнительные возможности, предлагаемые ORDBMS.
Теперь PostgreSQL также является очень хорошей RDBMS (вы не вынуждены использовать ее объектно-ориентированные функции, и я предполагаю, что большинство ее пользователей этого не делают), и вы можете использовать его с JPA без проблем.
Ответ №3:
JPA — это переводчик между «мышлением в объектах» (Java) и «мышлением в отношениях» (SQL). Поэтому реализация JPA всегда будет обращаться к БД в терминах отношений. «Объектно-реляционный» материал здесь игнорируется.
Игнорирование JPA и прямое обращение к БД в режиме «ORDBMS» не даст вам преимуществ в производительности в наиболее распространенных случаях, потому что ORDBMS по-прежнему являются СУБД с некоторой логикой клея, чтобы выглядеть немного объектно-стильно. Данные хранятся в отношениях, все пути доступа совпадают с чисто реляционным путем доступа.
Если вы действительно хотите получить преимущества в производительности, переключив не только продукт базы данных, но и технологию базы данных (или философию), вам следует обратить внимание на базы данных реальных объектов или даже NoSQL.
Комментарии:
1. итак, вы говорите, что лучше использовать JPA вместо ORDBMS (postgre) вместо прямого подключения к ORDBMS?
2. Совсем наоборот: ЕСЛИ вы хотите реальных преимуществ RDBMS, вы не можете использовать JPA. Но простота использования JPA по сравнению с прямыми вызовами JDBC превосходит это более чем достаточно. И _O_RDBMS дополнительные преимущества по сравнению с чистыми преимуществами RDBMS в большинстве случаев настолько малы, что переключение не является проблемой.