Что такое объектно-реляционное отображение (ORM) по отношению к Hibernate и JDBC? - PullRequest
12 голосов
/ 15 августа 2011

Может ли кто-нибудь объяснить, в терминах непрофессионала, что такое объектно-реляционное отображение (ORM) по отношению к Hibernate и JDBC?

Диаграммы были бы особенно полезны для понимания ...

РЕДАКТИРОВАТЬ: Я нашел это через Google для Hibernate ORM, кто-то может подтвердить, что это точно и хорошее представление о том, как используется ORM.

enter image description here

src: http://software -carpentry.org / 3_0 / summary.html

Ответы [ 3 ]

33 голосов
/ 15 августа 2011

ORM позволяет использовать объекты Java в качестве представления реляционной базы данных. Он отображает два понятия (объектно-ориентированный и реляционный)

Hibernate - это инфраструктура ORM - вы описываете, как ваши объекты представлены в вашей базе данных, и hibernate обрабатывает преобразование.

JDBC - это API для доступа к базе данных, и он работает «реляционным образом» - вы запрашиваете таблицы и получаете строки и столбцы обратно. Hibernate использует JDBC для извлечения данных и последующего преобразования их в объекты.

JDBC ResultSet имеет несколько записей, и каждая запись имеет набор столбцов. В hibernate это становится равным List<SomeClass>, где SomeClass has a field for every column in the database table, and there is one instance of SomeClass` на запись базы данных.

6 голосов
/ 08 февраля 2015

Я читал на Hibernate и наткнулся на эту тему. Проводя дальнейшие исследования, я нашел другое замечательное объяснение, которое может кому-то помочь:

Hibernate Framework упрощает разработку Java-приложения для взаимодействия с базой данных. Hibernate - это легковесный инструмент с открытым исходным кодом ORM (Object Relational Mapping).

Инструмент ORM упрощает создание данных, манипулирование данными и доступ к данным. Это метод программирования, который отображает объект на данные, хранящиеся в базе данных.

enter image description here

Преимущества Hibernate:

1) Opensource и Lightweight: Hibernate Framework является открытым исходным кодом по лицензии LGPL и облегченным.

2) Высокая производительность: Производительность Hibernate Framework высока, поскольку кэш-память используется внутри Hibernate Framework. Существует два типа кеша в Hibernate Framework кеша первого уровня и кеша второго уровня. Кэш первого уровня включен по умолчанию.

3) Независимый от базы данных запрос: HQL (Hibernate Query Language) - это объектно-ориентированная версия SQL. Он генерирует базу данных независимых запросов. Таким образом, вам не нужно писать конкретные запросы к базе данных. Перед переходом в режим гибернации, если база данных была изменена для проекта, нам также необходимо изменить SQL-запрос, что приводит к проблеме обслуживания.

4) Автоматическое создание таблиц: Hibernate Framework предоставляет возможность автоматического создания таблиц базы данных. Поэтому нет необходимости создавать таблицы в базе данных вручную.

5) Упрощает сложное объединение: Извлечь данные из нескольких таблиц легко в Hibernate Framework.

6) Предоставляет статистику запросов и состояние базы данных: Hibernate поддерживает кэш запросов и предоставляет статистику о запросах и состоянии базы данных.

Информация от javatpoint

1 голос
/ 01 февраля 2017

Исходя из вашей диаграммы, у нас есть класс Person, в котором есть члены-данные: Логин, Фамилия, Имя и Адрес.Теперь Address для каждого объекта Person является объектом класса Address.

Теперь посмотрим на таблицы базы данных.У нас есть одна таблица Person, соответствующая классу Person, и таблица Address для класса Address.Теперь есть связь между этими двумя таблицами.Первичный ключ таблицы адресов (ID) сопоставляется с внешним ключом (addr) таблицы Person.Таким образом, между двумя таблицами устанавливается связь.

Но для наших классов Person и Address таких отношений нет.Поэтому мы обрабатываем адрес как отдельный объект, а затем интегрируем его с классом Person.Таким образом, мы фактически идем на компромисс с объектно-ориентированной методологией, чтобы соответствовать реляционному методу таблицы.На самом деле это очень плохой способ решения этой проблемы, поскольку существует огромный разрыв между тем, как мы обрабатываем данные в таблицах и в классах, использующих объект.

Эта проблема решается в том, что называется Object RelationalОтображение (ORM), где мы сопоставляем две концепции объектно-ориентированного и реляционного.ORM позволяет использовать объекты Java в качестве представления реляционной базы данных.

Hibernate - это структура ORM - вы описываете, как ваши объекты представлены в вашей базе данных, а Hibernate обрабатывает преобразование.

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