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

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

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

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

Добавлен: 30.11.2023

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Хотя HQL и SQL имеют некоторые различия, оба языка могут использоваться для выполнения различных операций в базах данных. HQL обычно используется для выполнения операций над объектами Hibernate, а SQL - для выполнения операций над таблицами базы данных.


  1. Что такое Query? Как передать в объект Query параметры?

Query - это интерфейс JPA, который используется для выполнения запросов к базе данных. Он предоставляет методы для управления запросами, получения результата и управления параметрами.Для передачи параметров в объект Query необходимо использовать именованные или неименованные параметры. Именованные параметры определяются с использованием символа ":" перед именем параметра. Например, в запросе JPQL вы можете использовать именованные параметры следующим образом:String jpql ="SELECT e FROM Employee e WHERE e.id = :empId";Queryquery= entityManager.createQuery(jpql);query.setParameter("empId", 1);В этом примере мы создали именованный параметр ":empId" в запросе JPQL и установили его значение равным 1 с помощью метода setParameter().Неименованные параметры определяются с использованием знака вопроса "?". Например:String jpql ="SELECT e FROM Employee e WHERE e.id = ?1";Queryquery= entityManager.createQuery(jpql);query.setParameter(1, 1);В этом примере мы создали неименованный параметр "?1" в запросе JPQL и установили его значение равным 1 с помощью метода setParameter() и указания индекса параметра (в данном случае 1).Оба метода setParameter() могут быть использованы для передачи параметров в объект Query. Они принимают имя или индекс параметра и значение параметра, которое должно быть передано в запрос. Параметры также могут быть установлены путем вызова метода setParameter() с использованием объекта Parameter соответствующего типа.


  1. Какие можно устанавливать параметры в hbm2ddl, рассказать про каждый из них.

hbm2ddl - это инструмент в Hibernate, который позволяет автоматически создавать таблицы базы данных на основе настроек сущностей в Hibernate. Он позволяет генерировать DDL (Data Definition Language) скрипты для создания, обновления или удаления таблиц базы данных.Параметры для настройки поведения hbm2ddl можно устанавливать в файле конфигурации Hibernate или через API Hibernate. Вот некоторые из наиболее распространенных параметров hbm2ddl:
hibernate.hbm2ddl.auto: Определяет режим, в котором Hibernate должен выполнять обновления базы данных в соответствии с изменениями в сущностях. Доступные значения:validate: Hibernate проверяет соответствие между метаданными и схемой базы данных. Если метаданные не соответствуют схеме, Hibernate выдает исключение.update: Hibernate выполняет обновления в базе данных, чтобы соответствовать метаданным. Hibernate добавляет новые таблицы, колонки и ключи, но не удаляет старые элементы, которые не описаны в метаданных.create: Hibernate создает схему базы данных на основе метаданных. Если база данных уже существует, Hibernate удаляет ее и затем создает заново.create-drop: Hibernate создает схему базы данных на основе метаданных. По завершении работы, Hibernate удаляет всю базу данных.hibernate.hbm2ddl.import_files: Указывает список SQL-файлов, которые должны быть выполнены после создания схемы базы данных. Файлы могут содержать запросы для создания таблиц, добавления данных и т.д.hibernate.hbm2ddl.charset_name: Определяет название кодировки, используемой при генерации SQL-запросов hbm2ddl.hibernate.hbm2ddl.jdbc_metadata_extraction_strategy: Определяет стратегию, используемую Hibernate для извлечения метаданных из базы данных. Доступные значения:individually: Hibernate запросит метаданные для каждой таблицы по отдельности.grouped: Hibernate запросит метаданные для всех таблиц в одном запросе.hibernate.hbm2ddl.format_sql: Определяет, следует ли форматировать генерируемый SQL-код.hibernate.hbm2ddl.delimiter: Определяет разделитель для выполнения нескольких SQL-запросов.hibernate.hbm2ddl.schema_filter_provider: Определяет провайдер фильтров схемы, используемый для исключения определенных таблиц или столбцов из схемы базы данных.hibernate.hbm2ddl.temp.use_jdbc_metadata_defaults: Определяет, должен ли Hibernate использовать настройки JDBC-метаданных для создания таблицы.
  1. Требования JPA к Entity-классам? Не менее пяти.


JPA определяет ряд требований, которые должны быть выполнены в Entity-классах:

  1. Класс должен иметь публичный конструктор без аргументов. Это необходимо для того, чтобы JPA мог создавать новые экземпляры Entity-класса при чтении данных из базы данных.

  2. Класс должен быть помечен аннотацией @Entity. Это указывает JPA, что класс является сущностью, которую нужно сохранять в базу данных.

  3. Класс должен иметь уникальный идентификатор, который определяется аннотацией @Id. JPA использует идентификатор для уникальной идентификации сущности в базе данных.

  4. Класс должен иметь геттеры и сеттеры для всех его свойств, которые нужно сохранять в базу данных. JPA использует геттеры и сеттеры для получения и сохранения данных в базу данных.

  5. Класс должен быть сериализуемым, чтобы его можно было передавать между разными JVM.


  1. Жизненный цикл Entity в Hibernate? Рассказать. 

Жизненный цикл Entity в Hibernate представляет собой последовательность состояний объекта с момента создания и до его удаления из базы данных. Жизненный цикл Entity в Hibernate состоит из следующих состояний:

  1. Transient (Непостоянное состояние): В этом состоянии объект еще не связан с сессией Hibernate и не имеет идентификатора. Он создается в памяти и не имеет связи с базой данных.

  2. Persistent (Постоянное состояние): В этом состоянии объект связан с сессией Hibernate и имеет идентификатор, который определяется базой данных. Изменения, внесенные в объект в этом состоянии, будут сохранены в базу данных.

  3. Detached (Отсоединенное состояние): В этом состоянии объект отсоединен от сессии Hibernate, но имеет идентификатор, который был присвоен ему при сохранении в базе данных. Изменения, внесенные в объект в этом состоянии, не будут сохранены в базу данных до тех пор, пока он не будет снова связан с сессией Hibernate.

  4. Removed (Удаленное состояние): В этом состоянии объект связан с сессией Hibernate, но помечен как удаленный. При синхронизации с базой данных объект будет удален.
Жизненный цикл Entity в Hibernate управляется сессией Hibernate. Сессия отслеживает изменения объекта и управляет сохранением или обновлением его в базе данных. Все состояния Entity могут быть получены с помощью метода session.getlifecycle() или с помощью аннотации @EntityListeners, которая позволяет добавить слушатели для состояний жизненного цикла Entity.DAO (Data Access Object) и SERVICE - это два слоя, используемые в приложениях на Java для управления доступом к данным и бизнес-логике соответственно.DAO слой предназначен для работы с базами данных и предоставляет интерфейс для работы с данными. Он инкапсулирует все операции, связанные с доступом к данным, такие как создание, чтение, обновление и удаление данных. DAO слой содержит классы, которые содержат SQL-запросы и другие методы для доступа к базе данных. DAO классы обычно имеют CRUD-методы (Create, Read, Update, Delete), которые позволяют выполнить соответствующие операции с базой данных.SERVICE слой, с другой стороны, предназначен для реализации бизнес-логики приложения. Он предоставляет интерфейс для взаимодействия с DAO слоем, а также обрабатывает все бизнес-правила, связанные с приложением. SERVICE слой может содержать классы, которые работают с несколькими DAO классами, выполняют проверку данных и принимают решения на основе бизнес-логики.
Обычно DAO и SERVICE слои работают вместе, чтобы обеспечить доступ к данным и бизнес-логику приложения. DAO слой обеспечивает доступ к данным, а SERVICE слой обрабатывает бизнес-логику, используя эти данные.Goal в Apache Maven - это задача или команда, которая выполняется во время сборки проекта. Goal может быть вызван явно при запуске Maven из командной строки, или он может быть частью фазы сборки.В Maven фаза сборки - это последовательность связанных goal'ов, которые выполняются в определенном порядке. Например, фаза сборки "package" включает goal'ы, которые компилируют исходный код, создают JAR-файл и т.д.Maven поставляется с набором предопределенных goal'ов, таких как compile, test, package и т.д. Однако, пользователь может определить свои собственные goal'ы для выполнения специфических задач, например, для выполнения тестового набора или сборки и установки дополнительных зависимостей.Goal в Maven обычно указывается в командной строке в формате "mvn :", где
- это фаза сборки, а - это goal, который нужно выполнить. Например, чтобы выполнить goal для сборки JAR-файла, необходимо запустить команду "mvn package".

____________________________________________________________________________
Scope (область видимости) зависимостей в Apache Maven - это параметр, который определяет, как зависимость будет использоваться в проекте и как будет управляться Maven. Scope указывается в файле pom.xml для каждой зависимости.
В Maven есть 6 различных областей видимости зависимостей:

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

test - зависимость используется только во время тестирования, например, библиотека для написания тестов.

system - зависимость необходима для сборки проекта, но не может быть найдена в репозитории Maven. Вместо этого, разработчик должен явно указать путь к файлу JAR на своей системе.

import - эта область видимости используется только в файле pom.xml и указывает на зависимости, которые необходимы для импорта в текущий проект. Обычно, это зависимости из родительского проекта, которые нужны для сборки проекта-потомка.
Установка правильной области видимости для зависимости помогает уменьшить размер итогового пакета, ускорить сборку проекта и избежать конфликтов зависимостей.

____________________________________________________________________________

Plugin (плагин) в Apache Maven - это инструмент, который позволяет расширять функциональность Maven, добавляя новые goal'ы, фазы сборки и задачи.
Плагины используются для автоматизации задач, которые не входят в стандартный набор фаз и goal'ов Maven, например, для генерации кода, выполнения тестов, деплоя проекта и т.д.
Каждый плагин в Maven - это отдельный JAR-файл, который содержит свой собственный код, настройки и описания goal'ов. При использовании плагина, Maven автоматически загружает его из локального или удаленного репозитория и использует его в проекте.
Плагины в Maven могут быть использованы как в командной строке, так и в файле pom.xml. Чтобы использовать плагин в командной строке, нужно выполнить команду "mvn
:". Например, чтобы выполнить цель "compile" из плагина "maven-compiler-plugin", нужно выполнить команду "mvn compiler:compile".

____________________________________________________________________________
Аннотация @Table используется в JPA (Java Persistence API) для определения сопоставления класса с таблицей базы данных. В аннотации @Table можно указать несколько параметров:
name - имя таблицы, которая будет использоваться для хранения данных этого класса. По умолчанию, имя таблицы совпадает с именем класса.
schema - имя схемы базы данных, в которой должна быть создана таблица. Если схема не указана, используется значение по умолчанию.
catalog - имя каталога базы данных, в котором должна быть создана таблица. Если каталог не указан, используется значение по умолчанию.
uniqueConstraints - ограничения уникальности для таблицы. Этот параметр используется для указания ограничений, которые должны быть соблюдены при создании таблицы.
indexes - индексы для таблицы. Этот параметр используется для указания индексов, которые должны быть созданы для таблицы.