1. Что такое ORM? Что такое JPA? Что такое Hibernate?
UNKNOWNЧто такое ORM?
Object Relational Mapping - это концепция/процесс преобразования данных из объектно-ориентированного языка в реляционные БД и наоборот. Например, в Java это делается с помощью рефлексии и JDBC.
JDBC - Java DataBase Connectivity — API для работы с реляционными (зависимыми) БД. Платформенно независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql, входящего в состав Java SE. Предоставляет методы для получения и обновления данных. Не зависит от конкретного типа базы. Библиотека, которая входит в стандартную библиотеу, содержит: набор классов и интерфейсов для работы с БД (для нас разработчиков api) + интерфейсы баз данных.
JDBC реализует механизмы работы подключений к базе данных, создания запросов и обработки результатов.

Наш код –> JDBC –> драйвера разработчиков БД –> БД.
JDBC has 3 entities:
- Connection (класс). Объект которого отвечает за соединение с базой и режим работы с ней (лекция 3.1.4)
- Statement (объект для оператора JDBC) используется для отправки SQL-оператора на сервер баз данных. Объект для оператора связан с объектом Connection и является объектом, обрабатывающим взаимодействие между приложением и сервером баз данных.
- Можно:
- что-то поменять Update statement (create, delete, insert) в базе;
- что-то запросить Query statement (select) из базы;
- Для разных задач есть разные виды Statement-ов:
- statement - обычный. передаем в него либо Update либо Query
- PreparedStatement - возможность сделать некий шаблон запроса, подставлять в него кто-то значения и использовать его
- CallableStatement - предоставляет возможность вызова хранимой процедуры, расположенной на сервере, из Java-приложения.
- ResultSet. Объект с результатом запроса, который вернула база. Внутри него таблица.
Рефлексия - это API, который позволяет:
- получать информацию о переменных, методах внутри класса, о самом классе, его конструкторах, реализованных интерфейсах и т.д.;
- получать новый экземпляр класса;
- получать доступ ко всем переменным и методам, в том числе приватным;
- преобразовывать классы одного типа в другой (cast);
- делать все это во время исполнения программы (динамически, в Runtime).
В Java есть специальный класс по имени Class. Поэтому его и называют классом класса. С помощью него осуществляется работа с рефлексией.
Что такое JPA?
Java Persistence API - это спецификация (стандарт, технология), обеспечивающая объектно-реляционное отображение простых JAVA-объектов (Plain Old Java Object - POJO) и предоставляющая универсальный API для сохранения, получения и управления такими объектами.
Сам JPA не умеет ни сохранять, ни управлять объектами, JPA только определяет правила игры: как должен действовать каждый провайдер (Hibernate, EclipseLink, OJB, Torque и т.д.), реализующий стандарт JPA. Для этого JPA определяет интерфейсы, которые должны быть реализованы провайдерами. Также JPA определяет правила, как должны описываться метаданные отображения и как должны работать провайдеры.
Каждый провайдер обязан реализовывать всё из JPA, определяя стандартное получение, сохранение и управление объектами. Помимо этого, провайдеры могут добавлять свои личные классы и интерфейсы, расширяя функционал JPA.
JPA:
- API в пакете javax.persistance (набор интерфейсов EntityManager, Query,EntityTransaction),
- JPQL - объектный язык запросов (запросы выполняются к объектам)
- Metadata (аннотации или xml)
JAVA-код, написанный только с использованием интерфейсов и классов JPA, позволяет разработчику гибко менять одного провайдера на другого. Например, если приложение использует Hibernate как провайдера, то ничего не меняя в коде можно поменять провайдера на любой другой. Но, если мы в коде использовали интерфейсы, классы или аннотации, например, из Hibernate, то поменяв провайдера на EclipseLink, эти интерфейсы, классы или аннотации уже работать не будут.
Что такое Hibernate?
Hibernate - это провайдер, реализующий спецификацию JPA. Hibernate полностью реализует JPA плюс добавляет функционал в виде своих классов и интерфейсов, расширяя свои возможности по работе с сущностями и БД.
Предыдущий вопрос: 28. Что такое TIMESTAMP?
Следующий вопрос: 2. Что такое EntityManager? Какие функции он выполняет?
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку: напишите мне