Файл: 1. Что такое Maven Для чего он нужен Как добавлять в проект библиотеки без него.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 402
Скачиваний: 6
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
1) Сущности (Entities): это объекты, которые представляют таблицы в базе данных. В JPA сущности обозначаются аннотацией @Entity. В Hibernate, помимо аннотаций, сущности также могут быть описаны с помощью файлов маппинга в формате XML.
2) Менеджеры сущностей (Entity Managers): это объекты, которые управляют жизненным циклом сущностей в приложении. Они обеспечивают CRUD-операции (create, read, update, delete), а также поиск и выборку данных. В JPA менеджер сущностей представлен интерфейсом EntityManager, а в Hibernate — классом Session.
3) Фабрики (Factories): это объекты, которые используются для создания других объектов, таких как менеджеры сущностей, провайдеры персистенции и т.д. В JPA фабрика представлена интерфейсом EntityManagerFactory, а в Hibernate — классом SessionFactory.
4) Запросы (Queries): это объекты, которые представляют запросы к базе данных. В JPA они реализованы с помощью интерфейса Query, а в Hibernate — классов Query и Criteria.
5) Транзакции (Transactions): это объекты, которые управляют транзакциями базы данных. В JPA они реализованы с помощью интерфейса EntityTransaction, а в Hibernate — класса Transaction.
6) Провайдеры персистенции (Persistence Providers): это реализации JPA, которые позволяют использовать этот API в конкретном приложении. Например, Hibernate является провайдером персистенции для JPA.
(В целом, JPA и Hibernate взаимосвязаны следующим образом: 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 в определенных случаях.)
15. Основные аннотации Hibernate, рассказать.
@Entity: аннотация, указывающая, что класс является сущностью базы данных. Аннотация также может быть использована для указания имени таблицы в базе данных, связанной с этой сущностью.
@Table: аннотация, используемая для указания имени таблицы в базе данных, связанной с сущностью.
@Id: аннотация, используемая для указания, что поле является первичным ключом в таблице базы данных.
@GeneratedValue: аннотация, используемая для указания, как должны генерироваться значения для первичного ключа. (Например, @GeneratedValue(strategy = GenerationType.IDENTITY) указывает, что значения первичного ключа должны быть автоматически генерируемыми и уникальными.)
@Column: аннотация, используемая для указания имени столбца таблицы базы данных, связанной с полем класса.
@OneToOne: аннотация, используемая для указания отношения "один-к-одному" между двумя классами.
@OneToMany: аннотация, используемая для указания отношения "один-ко-многим" между двумя классами. (Например, если один объект класса A связан с множеством объектов класса B, то аннотацию можно использовать для указания этого отношения.)
@ManyToOne: аннотация, используемая для указания отношения "многие-к-одному" между двумя классами. (Например, если множество объектов класса B связано с одним объектом класса A, то аннотацию можно использовать для указания этого отношения.)
@ManyToMany: аннотация, используемая для указания отношения "многие-ко-многим" между двумя классами.
@JoinTable: аннотация, используемая для указания имени таблицы, используемой для связи объектов из разных таблиц базы данных.
@JoinColumn @Version @OrderBy
(Аннотация @MapsId в Hibernate используется для установки соответствия между первичным ключом (id) сущности-родителя и вложенным объектом. Она указывает, что идентификатор родительской сущности также должен использоваться как идентификатор вложенного объекта. Например, позволяет связать эти две сущности по общему идентификатору и создавать их одновременно
)
16. Чем HQL отличается от SQL?
HQL (Hibernate Query Language) - это объекто-ориентированный язык запросов, который очень похож на SQL (Structured Query Language - язык структурированных запросов). Главное различие языков HQL и SQL связано с тем, что SQL формирует запросы из наименований таблиц в базе данных и их столбцов, а HQL работает с сущностями (классами) и их полями (аттрибутами класса).
(HQL - это объектно-ориентированный язык запросов, разработанный для работы с Hibernate. Он очень похож на SQL, но HQL использует имена классов и свойств объектов вместо имен таблиц и столбцов, что делает его более пригодным для работы с объектно-ориентированными приложениями. Он также поддерживает наследование, агрегирование, полиморфизм и другие концепции ООП.
SQL, в свою очередь, является стандартным языком запросов, используемым для работы с реляционными базами данных. SQL использует таблицы и столбцы для хранения и извлечения данных. SQL предоставляет более широкий спектр операций, чем HQL, и может быть использован для выполнения более сложных запросов.)
Преимущества HQL:
HQL позволяет избежать прямой работы с таблицами и столбцами, что уменьшает зависимость кода от структуры базы данных и упрощает разработку приложений. HQL также обеспечивает более высокий уровень абстракции, что делает его более гибким и удобным в использовании.
Недостатки HQL:
Поскольку HQL является объектно-ориентированным языком запросов, его производительность может быть несколько ниже, чем у SQL, особенно при выполнении сложных запросов.
17. Что такое Query? Как передать в объект Query параметры?
Что такое Query?
(HQL запрос всегда начинается с получения объекта Query из Session вызовом метода createQuery(), в который передаётся текст запроса.)
Интерфейс Query
представляет собой объект для выполнения запросов к базе данных.
Объект Query можно создать (в JPA/Hibernate) используя метод:
Session.createQuery() - для создания запросов на основе JPQL (HQL);
Session.createNativeQuery() - для создания запросов на основе SQL.
(JPQL - Java Persistence Query Language)
Как передать в объект Query параметры?
Для передачи параметров в объект Query, мы можно использовать именованные или позиционные параметры.
Именованные параметры обозначаются символом двоеточия (:), за которым следует имя параметра. В запросе используется имя параметра, и его значение устанавливается с помощью метода setParameter() объекта Query. Например:
Позиционные параметры обозначаются символом вопроса (?). В запросе используется порядковый номер параметра, начиная с 1, и его значение устанавливается с помощью метода setParameter() объекта Query. Например:
(Кроме того, объект Query поддерживает множество других методов для настройки запросов и получения результатов, таких как setFirstResult(), setMaxResults(), getSingleResult() и т.д.)
18. Какие можно устанавливать параметры в hbm2ddl, рассказать про каждый из них.
hbm2ddl (Hibernate Mapping to Database DDL) - это инструмент, который позволяет автоматически создавать и обновлять таблицы базы данных на основе сущностей Hibernate. Он использует информацию о маппинге Hibernate, чтобы сгенерировать соответствующий SQL для создания и обновления таблиц базы данных.
create: таблицы базы данных будут созданы заново каждый раз при запуске приложения.
update: таблицы базы данных будут обновлены в соответствии с изменениями в маппинге Hibernate.
create-drop: таблицы базы данных будут созданы заново при запуске приложения, а затем снова уничтожены при остановке приложения.