··········
········
······
····
··
Прежде всего, чтобы вы смогли произвести компиляцию кода, вам потребуется JPA API, который определяет все аннотации и классы, имеющиеся в пакете javax.persistence. Все это, а также время выполнения EclipseLink (то есть поставщика постоянства) будет обеспечиваться с помощью идентификатора артефакта org.eclipse.persistence.jpa. Как можно было видеть в предыдущей главе, Bean Validation API заключен в артефакт hibernate-validator. Кроме того, вам потребуются JDBC-драйверы для подключения к Derby. Идентификатор артефакта derbyclient ссылается на файл с расширением. jar, содержащий JDBC-драйвер для подключения к Derby, работающей в серверном режиме (база данных функционирует как отдельный процесс и прослушивает порт), а идентификатор артефакта derby включает в себя классы для использования Derby как встраиваемой системы управления базами данных. Обратите внимание, что область этого идентификатора артефакта ограничивается тестированием (
Для компиляции классов откройте интерпретатор командной строки в корневом каталоге, содержащем файл pom.xml, и введите приведенную далее Maven-команду:
$ mvn compile
После этого вы должны будете увидеть сообщение BUILD SUCCESS, говорящее о том, что компиляция прошла успешно. Maven создаст подкаталог target со всеми файлами наряду с persistence.xml. Для выполнения интеграционных тестов снова прибегните к Maven, введя следующую команду:
$ mvn integration-test
Вы должны будете увидеть несколько журналов касаемо Derby при создании базы данных и таблиц в памяти. Затем окажется задействован класс BookIT, а отчет Maven проинформирует вас о том, что результаты применения трех вариантов тестирования оказались успешными:
Results:
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
[INFO] —————
[INFO] BUILD SUCCESS
[INFO] —————
[INFO] Total time: 5.192s
[INFO] Finished
[INFO] Final Memory: 18M/221M
[INFO] —————
Применение класса Main с использованием Maven
Перед тем как применять класс Main, вам потребуется запустить Derby. Самый легкий способ сделать это — открыть каталог $DERBY_HOME/bin и выполнить сценарий startNetworkServer. Derby запустится и выведет в консоли следующие сообщения:
Security manager installed using the Basic server security policy.
Apache Derby Network Server — 10.9.1.0 — (8 02917) started and ready to accept connections on port 1527
Процесс Derby прослушивает порт 1527 и ждет, когда JDBC-драйвер отправит какой-нибудь SQL-оператор. Для применения класса Main вы можете воспользоваться командой интерпретатора java либо прибегнуть к exec-maven-plugin, как показано далее:
$ mvn exec: java
В результате применения класса Main произойдет несколько вещей. Прежде всего Derby автоматически создаст базу данных chapter04DB, как только будет инициализирована сущность Book. Это случится потому, что в файле persistence.xml вы добавили свойство create=true в URL-адрес JDBC:
··········value="jdbc: derby://localhost:1527/chapter04DB;create=true"/>
Это сокращение очень полезно, когда вы находитесь в режиме разработки, поскольку вам не требуются никакие SQL-сценарии для создания базы данных. Затем свойство javax.persistence.schema-generation-action проинформирует EclipseLink о необходимости автоматически удалить и заново создать таблицу BOOK. И наконец, сущность Book будет вставлена в таблицу (с автоматически сгенерированным идентификатором).
Воспользуемся Derby-командами для вывода на экран структуры таблицы: введем команду ij в консоли (каталог $DERBY_HOME/bin должен быть в вашей переменной PATH). Это приведет к запуску интерпретатора Derby, и вы сможете выполнить команды для подключения к базе данных, вывести на экран таблицы базы данных chapter04DB (show tables), проверить структуру таблицы BOOK (describebook) и даже увидеть ее содержимое, введя SQL-операторы, например SELECT * FROM BOOK.
$ ij
version 10.9.1.0
ij> connect 'jdbc: derby://localhost:1527/chapter04DB';
ij> show tables;
TABLE_SCHEM·····|TABLE_NAME·····|REMARKS
—————
APP·············|BOOK···········|
APP·············|SEQUENCE·······|
ij> describe book;