Файл: 1. Что такое Maven Для чего он нужен Как добавлять в проект библиотеки без него.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 266

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


ORM (англ. Object-Relational Mapping, рус. объектно-реляционное отображение, или преобразование) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Необходимо обеспечить работу с данными в терминах классов, а не таблиц данных, и, напротив, преобразовать термины и данные классов в данные, пригодные для хранения в СУБД. Необходимо также обеспечить интерфейс для CRUD-операций над данными. В общем, необходимо избавиться от необходимости писать SQL-код для взаимодействия в СУБД.

Преимущества ORM в сравнение с JDBC:

Позволяет нашим бизнес методам обращаться не к БД, а к Java-классам

Ускоряет разработку приложения

Основан на JDBC

Отделяет SQL-запросы от ОО модели

Позволяет не думать о реализации БД

Сущности основаны на бизнес-задачах, а не на стуктуре БД

Управление транзакциями



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

Hibernate — библиотека для языка программирования Java, предназначенная для решения задач объектно-реляционного отображения (ORM), самая популярная реализация спецификации JPA. Распространяется свободно на условиях GNU Lesser General Public License.

Позволяет сократить объёмы низкоуровневого программирования при работе с реляционными базами данных; может использоваться как в процессе проектирования системы классов и таблиц «с нуля», так и для работы с уже существующей базой.

Библиотека не только решает задачу связи классов Java с таблицами базы данных (и типов данных Java с типами данных SQL), но и также предоставляет средства для автоматической генерации и обновления набора таблиц, построения запросов и обработки полученных данных и может значительно уменьшить время разработки, которое обычно тратится на ручное написание
SQL- и JDBC-кода. Hibernate автоматизирует генерацию SQL-запросов и освобождает разработчика от ручной обработки результирующего набора данных и преобразования объектов, максимально облегчая перенос (портирование) приложения на любые базы данных SQL.
Hibernate одна из самых популярных открытых реализаций спецификации Java Persistence API, стандарт де-факто. То есть JPA только описывает правила и API, а Hibernate реализует эти описания. ORM фреймворк для Java с открытым исходным кодом.

Библиотека для языка программирования Java, предназначенная для решения задач объектно-реляционного отображения (ORM), самая популярная реализация спецификации JPA. Позволяет сократить объёмы низкоуровневого программирования при работе с реляционными базами данных; может использоваться как в процессе проектирования системы классов и таблиц «с нуля», так и для работы с уже существующей базой.

- решает задачу связи классов Java с таблицами базы данных

- обеспечивает связь типов данных Java с типами данных SQL

- предоставляет средства для автоматической генерации и обновления набора таблиц, построения запросов и обработки полученных данных и может значительно уменьшить время разработки, которое обычно тратится на ручное написание SQL- и JDBC-кода.

- автоматизирует генерацию SQL-запросов и освобождает разработчика от ручной обработки результирующего набора данных и преобразования объектов, максимально облегчая перенос (портирование) приложения на любые базы данных SQL.
Язык запросов Hibernate (HQL)
Hibernate обеспечивает использование SQL-подобного языка Hibernate Query Language (HQL), который позволяет выполнять SQL-подобные запросы, записанные рядом с объектами данных Hibernate. Запросы критериев

 предоставляются как Объектно-ориентированная альтернатива к HQL.

Интеграция


Hibernate может использоваться как в самостоятельных приложениях Java, так и в программах JavaEE, выполняемых на сервере (например, сервлет или компоненты EJB). Также он может включаться как дополнительная возможность к другим языкам программирования. Например, Adobe интегрировал Hibernate в девятую версию ColdFusion (запускаемый на серверах с поддержкой приложений J2EE) с уровнем абстракции новых функций и синтаксиса, приложенных к CFML.

  1. В чем разница между JPA и Hibernate? Как связаны все эти понятия?


JPA это спецификация, а Hibernate - это ORM фреймворк/библиотека, которая совместима с JPA. Как и в классическом ООП, класс, который реализует интерфейс, может иметь дополнительные методы/свойства, так и Hiberante имеет больше фичей чем JPA
Смотри выше + JPA - это набор интерфейсов, Hibernate - это набор классов, которые реализуют JPA интерфейсы.

Hibernate одна из самых популярных открытых реализаций последней версии спецификации. JPA только описывает правила и API, а Hibernate реализует эти описания, впрочем у Hibernate (как и у многих других реализаций JPA) есть дополнительные возможности, не описанные в JPA (и не переносимые на другие реализации JPA).


  1. Какие классы/интерфейсы относятся к JPA/Hibernate?


SessionFactory (org.hibernate.SessionFactory) - неизменяемый потокобезопасный объект с компилированным маппингом для одной базы данных. Необходимо инициализировать SessionFactory всего один раз. Экземпляр SessionFactory используется для получения объектов Session, которые используются для операций с базами данных.

Session (org.hibernate.Session) - однопоточный короткоживущий объект, который предоставляет связь между объектами приложения и базой данных. Он оборачивает JDBC java.sql.Connection и работает как фабрика для org.hibernate.Transaction. Разработчик должен открывать сессию по необходимости и закрывать ее сразу после использования. Экземпляр Session является интерфейсом между кодом в java приложении и hibernate framework и предоставляет методы для операций CRUD.

Transaction (org.hibernate.Transaction) - однопоточный короткоживущий объект, используемый для атомарных операций. Это абстракция приложения от основных JDBC или JTA транзакций. org.hibernate.Session может занимать несколько org.hibernate.Transaction в определенных случаях.

EntityManagerFactory — это встроенный интерфейс JPA. Он может быть создан с помощью класса Persistence, указав название блока сохранения из файла .xml сохранения. Вышеупомянутый код создает emf EntityManagerFactory, ссылаясь на единицу сохранения PERSISTENCE. EntityManagerFactory специфичен для базы данных. Итак, если вы хотите подключиться к другой базе данных, необходимо создать другой экземпляр EntityManagerFactory. EntityManagerFactory может быть использован для создания экземпляров EntityManager.

EntityManager также является встроенным интерфейсом JPA. Он может быть создан с помощью экземпляра EntityManagerFactory. Код выше создает EntityManager экземпляр EM через EntityManagerFactory экземпляр emfEntityManager представляет собой соединение базы данных. Вы можете использовать его для выполнения операций с базой данных, таких как вставка/обновление/удаление или запрос таблицы. Вышеупомянутый код вызывает метод PERSISTENCE для сохранения записи Fruit в таблице Fruit.

EntityTransaction также является встроенным интерфейсом JPA. Он может быть создан с помощью EntityManager. Код выше создает экземпляр EntityTransaction и через entityManager экземпляр EM. Сделка EntityTransaction инкапсулирует транзакцию базы данных. Вызов к методу начала транзакции и вызов для совершения сохраняет изменения в базе данных.