1. Что такое ORM? Что такое JPA? Что такое Hibernate?

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:

  1. Connection (класс). Объект которого отвечает за соединение с базой и режим работы с ней (лекция 3.1.4)
  2. Statement (объект для оператора JDBC) используется для отправки SQL-оператора на сервер баз данных. Объект для оператора связан с объектом Connection и является объектом, обрабатывающим взаимодействие между приложением и сервером баз данных.
  3. Можно:
  4. что-то поменять Update statement (create, delete, insert) в базе;
  5. что-то запросить Query statement (select) из базы;
  6. Для разных задач есть разные виды Statement-ов:
  7. statement - обычный. передаем в него либо Update либо Query
  8. PreparedStatement - возможность сделать некий шаблон запроса, подставлять в него кто-то значения и использовать его
  9. CallableStatement - предоставляет возможность вызова хранимой процедуры, расположенной на сервере, из Java-приложения.
  10. 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? Какие функции он выполняет?

Все вопросы по теме: список

Все темы: список

Вопросы/замечания/предложения/нашли ошибку: напишите мне

Report Page