Учебники

Hibernate — Обзор ORM

JDBC расшифровывается как Java Database Connectivity . Он предоставляет набор API Java для доступа к реляционным базам данных из программы Java. Эти API Java позволяют программам Java выполнять операторы SQL и взаимодействовать с любой базой данных, совместимой с SQL.

JDBC предоставляет гибкую архитектуру для написания независимого от базы данных приложения, которое может работать на разных платформах и взаимодействовать с разными СУБД без каких-либо изменений.

Плюсы и минусы JDBC

Плюсы JDBC Минусы JDBC

Чистая и простая обработка SQL

Хорошая производительность с большими данными

Очень хорошо для небольших приложений

Простой синтаксис так легко выучить

Сложный, если он используется в крупных проектах

Большие накладные расходы на программирование

Нет инкапсуляции

Трудно реализовать концепцию MVC

Запрос специфичен для СУБД

Чистая и простая обработка SQL

Хорошая производительность с большими данными

Очень хорошо для небольших приложений

Простой синтаксис так легко выучить

Сложный, если он используется в крупных проектах

Большие накладные расходы на программирование

Нет инкапсуляции

Трудно реализовать концепцию MVC

Запрос специфичен для СУБД

Почему объектно-реляционное сопоставление (ORM)?

Когда мы работаем с объектно-ориентированной системой, существует несоответствие между объектной моделью и реляционной базой данных. СУБД представляют данные в табличном формате, тогда как объектно-ориентированные языки, такие как Java или C #, представляют их как взаимосвязанный граф объектов.

Рассмотрим следующий Java-класс с правильными конструкторами и связанной с ним публичной функцией —

public class Employee {
   private int id;
   private String first_name; 
   private String last_name;   
   private int salary;  

   public Employee() {}
   public Employee(String fname, String lname, int salary) {
      this.first_name = fname;
      this.last_name = lname;
      this.salary = salary;
   }
   
   public int getId() {
      return id;
   }
   
   public String getFirstName() {
      return first_name;
   }
   
   public String getLastName() {
      return last_name;
   }
   
   public int getSalary() {
      return salary;
   }
}

Учтите, что вышеперечисленные объекты должны быть сохранены и извлечены в следующую таблицу RDBMS:

create table EMPLOYEE (
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20) default NULL,
   last_name  VARCHAR(20) default NULL,
   salary     INT  default NULL,
   PRIMARY KEY (id)
);

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

Sr.No. Несоответствие и описание
1

Зернистость

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

2

наследование

СУБД не определяют ничего похожего на Inheritance, которая является естественной парадигмой в объектно-ориентированных языках программирования.

3

тождественность

СУБД определяет ровно одно понятие «сходство»: первичный ключ. Java, однако, определяет как идентичность объекта (a == b), так и равенство объектов (a.equals (b)).

4

ассоциации

Объектно-ориентированные языки представляют ассоциации с использованием объектных ссылок, тогда как СУБД представляет ассоциацию в виде столбца внешнего ключа.

5

навигация

Способы доступа к объектам в Java и в RDBMS принципиально различны.

Зернистость

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

наследование

СУБД не определяют ничего похожего на Inheritance, которая является естественной парадигмой в объектно-ориентированных языках программирования.

тождественность

СУБД определяет ровно одно понятие «сходство»: первичный ключ. Java, однако, определяет как идентичность объекта (a == b), так и равенство объектов (a.equals (b)).

ассоциации

Объектно-ориентированные языки представляют ассоциации с использованием объектных ссылок, тогда как СУБД представляет ассоциацию в виде столбца внешнего ключа.

навигация

Способы доступа к объектам в Java и в RDBMS принципиально различны.

Приложение O bject- R elational M (ORM) — это решение для обработки всех вышеуказанных несовпадений импеданса.

Что такое ORM?

ORM расшифровывается как O bject- R elational M apping (ORM) — это метод программирования для преобразования данных между реляционными базами данных и объектно-ориентированными языками программирования, такими как Java, C # и т. Д.

Система ORM имеет следующие преимущества перед простым JDBC:

Sr.No. преимущества
1 Давайте бизнес-кодам обращаться к объектам, а не к таблицам БД.
2 Скрывает детали SQL-запросов от ОО-логики.
3 По материалам JDBC «под капотом».
4 Не нужно заниматься реализацией базы данных.
5 Объекты, основанные на бизнес-концепциях, а не на структуре базы данных.
6 Управление транзакциями и автоматическая генерация ключей.
7 Быстрая разработка приложения.

Решение ORM состоит из следующих четырех объектов:

Sr.No. Решения
1 API для выполнения основных операций CRUD над объектами постоянных классов.
2 Язык или API для указания запросов, которые ссылаются на классы и свойства классов.
3 Настраиваемое средство для указания метаданных отображения.
4 Техника взаимодействия с транзакционными объектами для выполнения грязной проверки, отложенной выборки ассоциаций и других функций оптимизации.

Java ORM Frameworks

В Java есть несколько постоянных сред и опций ORM. Постоянная структура — это служба ORM, которая сохраняет и извлекает объекты в реляционную базу данных.