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, которая сохраняет и извлекает объекты в реляционную базу данных.