Файл: Жизненный цикл проекта Maven.docx

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

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

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

Добавлен: 12.04.2024

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

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

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


Жизненный цикл проекта — это список поименованных фаз построения проекта.

1. arhetype

Создание шаблона проекта, скачивание и подключение зависимостей.

2. compile

Компиляция проекта

3. test

Тестирование проекта

4. package

Создание jar или war файлов

5. install

Инсталляция в удаленном Maven-репозитории. Теперь проект доступен как модуль для других локальных проектов.

6. deploy

Инсталляция в удаленном Maven-репозитории (теперь стабильная версия проекта доступна широкому кругу разработчиков).
Maven имеет также стандартный жизненный цикл для чистки (cleaning) и для генерации его страницы (site). Если бы 'clean' было частью обычного жизненного цикла, проект подвергался бы чистке при каждом построении, что нежелательно.

Стандартные жизненные циклы могут быть существенно дополнены Maven-плагинами и Maven-архетипами.
  • Что такое Maven? Для чего он нужен? Как добавлять в проект библиотеки без него?



Apache Maven - это фреймворк для автоматизации сборки проекта на основе описания их структуры в файлах на языке POM (это подмножество языка XML)
Добавление библиотек без Maven
Если на компьютере только одна версия Джавы — всё просто. Чтобы подключить .jar, достаточно положить его в папку lib директории Java на жестком диске. Виртуальная машина при ближайшем запуске сама возьмет код из библиотеки.
Когда вы используете одновременно несколько версий Java-машины, раскладывать файлы библиотек для каждой из них утомительно. Лучше указать путь к нужным классам с помощью ключа -classpath.
Открываем терминал и пишем:
java -classpath ./classes ru.аuthor.libname.Main
ru.аuthor.libname.Main — наша библиотека

  • Как добавить dependency в Maven? Для чего они нужны? Откуда они скачиваются?


Для подключения зависимости в maven используется тег dependency. Теги dependency должны находиться внутри тега dependencies. В Maven библиотека является артефактом, а значит имеет groupId, artifactId и version. Чтобы подключить библиотеку к проекту с помощью maven достаточно указать её groupId, artifactId и version.
Dependency – это зависимости от библиотек, а если точней, то это и есть библиотека, которую вы бы хотели подключить к проекту.

Скачиваются зависимости из удаленного репозитория


  • Основные фазы проекта под управлением Maven?

1.compile - компилирование проекта;

2. test - тестирование с помощью JUnit тестов;

3. package - создание jar файла или war, ear в зависимости от типа проекта;

4. integration-test - запуск интеграционных тестов;

5. install - копирование jar (war, ear) в локальный репозиторий;

6. deploy - публикация файла в удалённый репозиторий.


  • Что такое JDBC? Какие классы/интерфейсы относятся к JDBC?

JDBC — платформенно независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql, входящего в состав Java SE. JDBC основан на концепции так называемых драйверов, позволяющих получать соединение с базой данных по специально описанному URL.
java.sql.DriverManager - позволяет загрузить и зарегистрировать необходимый JDBC-драйвер, а затем получить соединение с базой данных.
javax.sql.DataSource - решает те же задачи, что и DriverManager, но более удобным и универсальным образом. Существуют также javax.sql.ConnectionPoolDataSource и
javax.sq1.XADataSource задача которых - обеспечение поддержки пула соединений.
java.sql.Connection - обеспечивает формирование запросов к источнику данных и управление транзакциями.

Также предусмотрены интерфейсы
javax.sql.PooledConnection и javax.sql.XAConnection.
java.sql.Statement , java.sql.PreparedStatement и java.sql.CallableStatement - эти интерфейсы позволяют отправить запрос к источнику данных.

java.sql.ResultSet - объявляет методы, которые позволяют перемещаться по набору данных и считывать значения отдельных полей в текущей записи.
java.sql.ResultSetMetaData - позволяет получить информацию о структуре набора данных.
java.sql.DatabaseMetaData - позволяет получить информацию о структуре источника данных.

  • Для чего нужен DriverManager?

Класс DriverManager является уровнем управления JDBC, отслеживает все доступные драйверы и управляет установлением соединений между БД и соответствующим драйвером. Прежде чем подключаться к серверу БД необходимо определиться с соответствующим драйвером JDBC, который представляет собой *. jar файл.


  • Что такое Statement, PreparedStatement, CallableStatement?

Как только соединение установлено, мы можем взаимодействовать с базой данных. Интерфейсы JDBC Statement, CallableStatement и PreparedStatement определяют методы и свойства, которые позволяют отправлять команды SQL или PL / SQL и получать данные из вашей базы данных.

Statement - Используйте это для общего доступа к вашей базе данных. Полезно, когда вы используете статические операторы SQL во время выполнения. Интерфейс оператора не может принимать параметры.
PreparedStatement - Используйте это, когда вы планируете использовать операторы SQL много раз. Интерфейс PreparedStatement принимает входные параметры во время выполнения.
CallableStatement - Используйте это, когда вы хотите получить доступ к хранимым процедурам базы данных. Интерфейс CallableStatement также может принимать входные параметры времени выполнения.


  • Что такое sql-injection?

SQL-инъекция или SQLi – уязвимость, которая позволяет атакующему использовать фрагмент вредоносного кода на языке структурированных запросов (SQL) для манипулирования базой данных и получения доступа к потенциально ценной информации.


  • Что такое ResultSet? Как с ним работать?

Интерфейс ResultSet определяет методы, которые позволяют работать с данными, полученными в результате выполнения запроса в базу данных. Результаты запроса помещаются в объект типа ResultSet и являются логическим представлением строк и столбцов данных, хранящихся в базе.

Существует три варианта объектов типа ResultSet: Standard, Scrollable и Updateable. При использовании стандартного варианта обновление полученного результата запроса невозможно, а перемещение по строкам результата запроса возможно только в одном направлении: от первой к последней записи. Вариант Scrollable позволяет перемещаться по строкам запроса как в прямом, так и в обратном направлении, а также позиционировать курсор как на абсолютную, так и на относительную текущей позицию. Вариант Updateable позволяет изменять данные результата запроса, вставлять и удалять строки. Оба последних варианта будут выполняться более медленно, чем стандартный вариант использования объекта типа ResultSet. По этому их лучше использовать только в необходимых для этого случаях.

При работе со стандартным вариантом использования объектов типа ResultSet используются следующие методы:

next() - перемещает курсор на следующую строку результата запроса;

isBeforeFirst() - Возвращает true если курсор находится на позиции “до первой записи” (BFR);

isFirst() - Возвращает true если курсор указывает на первую запись;

isAfterLast() - Возвращает true если курсор находится на позиции “после последней записи” (ALR);


isLast() - Возвращает true если курсор указывает на последнюю запись;

getRow() - Возвращает integer значение номера строки в результате запроса. 1 – первая строка; 2 – вторая строка и т.д. Метод возвращает 0 если строк не существует либо курсор находится в позиции BFR либо ALR.

Два других варианта использования объектов типа ResultSet требуют указания дополнительных параметров методам createStatement(), prepareStatement() и prepareCall():

createStatement(int resultSetType, int resultSetConcurrency);

prepareStatement(String sql, int resultSetType, int resultSetConcurrency);

prepareCall(String sql, int resultSetType, int resultSetConcurrency).

Первый параметр resultSetType используется для создания Scrollable ResultSet. Он задает возможность перемещения курсора в разных направления по строкам результата запроса и определяет чувствительность к изменениям данных, которые были изменены в базе после выполнения запроса. Параметр resultSetType может принимать следующие интуитивно понятные значения:

TYPE_SCROLL_INSENSITIVE – предусматривает перемещение курсора в любых направлениях, допускает абсолютное и относительное позиционирование курсора. Не отражает изменений данных, сделанных в базе после выполнения запроса.

TYPE_SCROLL_SENSITIVE - предусматривает перемещение курсора в любых направлениях, допускает абсолютное и относительное позиционирование курсора. Отражает изменения данных, сделанных в базе после выполнения запроса.

TYPE_FORWARD_ONLY – параметр по умолчанию, стандартный ResultSet.

Второй параметр resultSetConcurrency отвечает за возможность изменения данных результата запроса, вставки и удаления строк из базы данных. Он может принимать одно из двух значений:

CONCUR_UPDATABLE – позволяет вносить изменения в данные;

CONCUR_READ_ONLY – параметр по умолчанию, стандартный ResultSet.

При работе со Scrollable и Updateable вариантами объектов типа ResultSet используются следующие методы:

next() - перемещает курсор на следующую строку результата запроса;

previous() - перемещает курсор на предыдущую строку результата запроса;

beforeFirst() - устанавливает курсор на позицию “до первой строки”; если сразу после выполнения этого метода выполнить метод getXXX() будет выдано исключение типа SQLException;

afterLast() - устанавливает курсор на позицию “после последней строки”; если сразу после выполнения этого метода выполнить метод getXXX() будет выдано исключение типа SQLException;

first() - устанавливает курсор на первую строку результата запроса;

last() - устанавливает курсор на последнюю строку результата запроса;

absolute() - устанавливает курсор на указанную строку относительно первой строки результата запроса;


relative() - устанавливает курсор на указанную строку относительно текущей строки;

moveToCurrentRow() - устанавливает курсор на строку, номер которой был запомнен в результате выполнения метода moveToInsertRow();

moveToInsertRow() - устанавливает курсор в специальную свободную позицию для заполнения пустой строки значениями с помощью методов updateXXX() и последующей вставки этой строки в базу данных с помощью метода insertRow();

deleteRow() - удаляет строку как из результата запроса, так и из базы данных.


  • Рассказать про паттерн DAO.

При проектировании информационной системы выявляются некоторые слои, которые отвечают за взаимодействие различных модулей системы. Соединение с базой данных является одной из важнейшей составляющей приложения. Всегда выделяется часть кода, модуль, отвечающающий за передачу запросов в БД и обработку полученных от неё ответов. В общем случае, определение Data Access Object описывает его как прослойку между БД и системой. DAO абстрагирует сущности системы и делает их отображение на БД, определяет общие методы использования соединения, его получение, закрытие и (или) возвращение в Connection Pool.
Вершиной иерархии DAO является абстрактный класс или интерфейс с описанием общих методов, которые будут использоваться при взаимодействии с базой данных. Как правило, это методы поиска, удаление по ключу, обновление и т.д.

Реализация DAO на уровне класса подразумевает использование одного единственного коннекта для вызова более чем одного метода унаследованного DAO класса. В этом случае, в вершине иерархии DAO AbstractController, в качестве поля объявляется connection.



  • Что такое JPA?

JPA (Java Persistence API) это спецификация Java EE и Java SE, описывающая систему управления сохранением java объектов в таблицы реляционных баз данных в удобном виде. Сама Java не содержит реализации JPA, однако есть существует много реализаций данной спецификации от разных компаний (открытых и нет). Это не единственный способ сохранения java объектов в базы данных (ORM систем), но один из самых популярных в Java мире.
Например JPA описывает, а Hibernate реализует.


  • Что такое ORM?

ORM — Object-Relational Mapping или в переводе на русский объектно-реляционное отображение. Это технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования. Если упростить, то ORM это связь Java объектов и записей в БД.