blob: 54b5fa9356a49fe740e880699d38c0910a500d59 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
<title>Создание приложения Swing Maven с использованием Hibernate - учебный курс по IDE NetBeans</title>
<!-- BEGIN METADATA -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="description" content="Demonstrates how to create a Maven Swing application that uses Hibernate as the persistence layer.">
<meta name="KEYWORDS" content="NetBeans, Maven, Hibernate, Swing, J2SE, Java SE, MySQL, mapping, reveng.xml">
<link rel="stylesheet" href="../../../netbeans.css" type="text/css">
<!-- END METADATA -->
</head>
<body>
<a name="top"></a>
<h1>Создание приложения Swing Maven с использованием Hibernate - учебный курс по IDE NetBeans</h1>
<p>В этом учебном руководстве IDE NetBeans используется для создания приложения Swing Java на основе архетипа Maven. Приложение использует библиотеку Hibernate в качестве слоя сохранения состояния для извлечения POJO (простых объектов Java) из реляционной базы данных. В данном учебном курсе описано, как мастеры в среде IDE могут помочь в создании необходимых полей и добавить зависимости Hibernate в POM. После создания объектов Java и настройки приложения для использования Hibernate создается графический пользовательский интерфейс для поиска и отображения данных.
</p>
<p>Поддержка Maven полностью интегрирована в IDE NetBeans, а Maven 3 входит в комплект в IDE. Вы можете создавать приложения с помощью набора архетипов Maven или с помощью архетипов в удаленных репозиториях в мастере создания проектов. Браузер репозитория Maven позволяет выполнять обзор локальных и удаленных репозиториев Maven, изучать артефакты и добавлять зависимости проекта к POM проекта.
</p>
<p class="tips">Подробные сведения о создании приложения с использованием Ant приведены в разделе <a href="hibernate-java-se.html">Использование библиотеки Hibernate в приложении Java на базе Swing</a>.</p>
<p class="tips">Подробные сведения о создании приложения Maven Java EE приведены в разделе <a href="../javaee/maven-entapp.html">Создание приложения уровня предприятия с использованием Maven</a>.</p>
<p><b>Содержание</b></p>
<img alt="Содержимое на этой странице применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0">
<ul class="toc">
<li><a href="#01">Создание базы данных</a></li>
<li><a href="#02">Настройка Maven</a>
<ul>
<li><a href="#02a">Просмотр репозиториев Maven</a></li>
</ul>
</li>
<li><a href="#03">Создание приложения Maven</a>
<ul>
<li><a href="#03b">Изменение свойств проекта Maven</a></li>
</ul>
</li>
<li><a href="#04">Добавление файлов Hibernate и зависимостей</a>
<ul>
<li><a href="#04a">Создание файла настройки библиотеки Hibernate</a></li>
<li><a href="#04b">Изменение файла настройки библиотеки Hibernate</a></li>
<li><a href="#04c">Создание служебного файла <tt>HibernateUtil.java</tt></a></li>
</ul>
</li>
<li><a href="#05">Создание файлов отображения библиотеки Hibernate и классов Java</a>
<ul>
<li><a href="#05a">Создание файлов отображения библиотеки Hibernate и объектов POJO на основе базы данных</a></li>
</ul>
</li>
<li><a href="#06">Создание графического интерфейса пользователя приложения</a>
<ul>
<li><a href="#06a">Создание формы &quot;Jframe&quot;</a></li>
<li><a href="#06b">Добавление элементов к форме</a></li>
</ul>
</li>
<li><a href="#07">Создание запроса в редакторе запросов HQL Query Editor</a></li>
<li><a href="#08">Добавление запроса к форме</a></li>
<li><a href="#09">Запуск проекта Maven</a>
<ul>
<li><a href="#09a">Загрузка проекта решения</a></li>
</ul>
</li>
<li><a href="#10">Создание объектов POJO и файлов отображения по отдельности</a> (дополнительно)</li>
</ul>
<p><b>Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Программное обеспечение или материал</th>
<th class="tblheader" scope="col">Требуемая версия</th>
</tr>
<tr>
<td class="tbltd1"><a href="http://download.netbeans.org/">IDE NetBeans</a></td>
<td class="tbltd1">пакет Java, версии 7.2, 7.3, 7.4, 8.0</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Комплект для разработчика на языке Java (JDK)</a></td>
<td class="tbltd1">версия 7 или 8</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://maven.apache.org/">Maven</a></td>
<td class="tbltd1">версия 2.09 или выше</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.mysql.com/">Сервер базы данных MySQL</a></td>
<td class="tbltd1">версия 5.x</td>
</tr>
<tr>
<td class="tbltd1">База данных &quot;Sakila&quot;</td>
<td class="tbltd1">подключаемый модуль, который можно получить в центре обновления</td>
</tr>
</tbody>
</table>
<p>Перед изучением этого учебного курса можно ознакомиться со следующей документацией:</p>
<ul>
<li><a href="http://wiki.netbeans.org/MavenBestPractices" target="_blank">Практические рекомендации по Apache Maven в NetBeans 6.x</a>;</li>
<li><a href="http://books.sonatype.com/mvnref-book/reference/introduction.html" target="_blank">Глава 1. Введение в Apache Maven</a> (фрагмент из книги <a href="http://books.sonatype.com/mvnex-book/reference/public-book.html" target="_blank">Maven by Example</a>)</li>
<li>Документация по Hibernate на сайте <a href="http://www.hibernate.org/" target="_blank">hibernate.org</a>;</li>
<li><a href="gui-functionality.html">Введение в разработку графического интерфейса </a></li>
<li>учебный курс <a href="../ide/mysql.html">Подключение к базе данных MySQL</a>.</li>
</ul>
<p class="tips">Можно загрузить <a href="https://netbeans.org/projects/samples/downloads/download/Samples/Java/DVDStoreAdmin-Maven.zip">готовый проект в виде архива ZIP</a>.</p>
<!-- ++++++++++++++ Creating Database ++++++++++++++ -->
<a name="01"></a>
<h2>Создание базы данных</h2>
<p>В этом учебном курсе используется база данных MySQL с названием <tt>sakila</tt>. Пример базы данных не входит в устанавливаемую в среду IDE, поэтому перед изучением этого учебного курса необходимо создать базу данных.
</p>
<p>База данных Sakila представляет собой свободно распространяемый пример базы данных MySQL, который можно найти на сайте MySQL. Для создания базы данных &quot;Sakila&quot; можно загрузить и установить подключаемый модуль &quot;Sakila Sample Database&quot; с использованием диспетчера подключаемых модулей. После установки подключаемого модуля можно создать базу данных &quot;Sakila&quot; в окне &quot;Services&quot;. База данных &quot;Sakila&quot; будет добавлена к списку баз данных в диалоговом окне &quot;Create MySQL database&quot;.</p>
<p>Для получения дополнительной информации о настройке среды IDE для работы с MySQL см. учебный курс <a href="../ide/mysql.html">Подключение к базе данных MySQL</a>.</p>
<ol>
<li>Откройте диспетчер подключаемых модулей и установите подключаемый модуль &quot;Sakila Sample Database&quot;.</li>
<li>После установки подключаемого модуля, запустите сервера MySQL базы данных путем расширения узла 'Базы данных' в окне 'Службы', щелкните правой кнопкой мыши узел MySQL Server и выберите 'Запустить'.</li>
<li>Щелкните правой кнопкой мыши узел &quot;MySQL Server&quot; и выберите &quot;Create Database&quot;.</li>
<li>Выберите базу данных &quot;Sakila&quot;из раскрывающегося списка &quot;New Database Name&quot; в диалоговом окне &quot;Create MySQL Database&quot;. Нажмите кнопку &quot;ОК&quot;.<br /> <img alt="Снимок диалогового окна создания базы данных MySQL" class="margin-around b-all" height="176" src="../../../images_www/articles/72/java/hibernate-j2se/create-sakila-mysql.png" title="Снимок диалогового окна создания базы данных MySQL" width="393">
<p>При нажатии клавиши OК среда IDE запустит сценарий, который создаст базу данных Sakila и заполнит ее таблицы. Результаты работы сценария можно увидеть в окне &quot;Результаты&quot;. В серверный узел MySQL будет добавлен подузел для базы данных Sakila.</p>
<li>Щелкните правой кнопкой мыши узел &quot;Sakila&quot; и выберите &quot;Connect&quot;.</li>
</ol>
<p>При нажатии кнопки &quot;Подключиться&quot; узел подключения к базе данных &quot;Sakila&quot; (<tt>jdbc:mysql://localhost:3306/sakila [по умолчанию: <i>username</i>]</tt>) появится под узлом &quot;Базы данных&quot;. При открытом подключении для просмотра данных в базе данных разверните этот узел подключения.</p>
<!-- ++++++++++++++ Configuring Maven ++++++++++++++ -->
<a name="02"></a>
<h2>Настройка Maven</h2>
<p>Maven входит в комплект среды IDE и устанавливается вместе с ней, но если это ваш первый проект Maven, следует проверить параметры конфигурации Maven в окне "Параметры".
</p>
<ol>
<li>Откройте окно 'Настройки' в IDE (Сервис > Параметры; NetBeans> Предпочтения на Mac).</li>
<li>Выберите в окне &quot;Параметры&quot; категорию &quot;Java&quot; и перейдите на вкладку &quot;Maven&quot;.</li>
<li>Подтвердите указание домашней страницы Maven.
<p>Можно использовать версию Maven, входящую в комплект среды IDE, либо указать местоположение локальной установки Maven (требуется версия 2.0.9 или более поздняя).</p></li>
<li>Для закрытия окна &quot;Параметры&quot; нажмите кнопку &quot;ОК&quot;.</li>
</ol>
<p class="notes"><strong>Примечания.</strong></p>
<ul>
<li>Поддержка Maven автоматически включается при включении Java в среде IDE. Если нет, необходимо включить подключаемый модуль Java EE.</li>
<li>В IDE NetBeans 7.1 и более ранних версиях IDE, вкладка Maven в окне 'Параметры' находится в категории 'Прочие'.</li>
</ul>
<div class="indent">
<a name="02a"></a>
<h3>Просмотр репозиториев Maven</h3>
<p>Артефакты, используемые Maven для создания всех проектов, сохраняются в локальном репозитории Maven. Если артефакт объявлен как зависимость проекта, он загружается в локальный репозиторий из одного из зарегистрированных удаленных репозиториев.</p>
<p>Некоторые известные индексированные репозитории Maven зарегистрированы и включены в браузер репозиториев по умолчанию. Зарегистрированные репозитории содержат большинство общедоступных артефактов, требуемых для создания проекта. Скорее всего, у вас не возникнет необходимости в регистрации дополнительных репозиториев, если ваш проект не содержит артефактов, имеющихся только в ваших личных репозиториях.
</p>
<p>Можно просмотреть локальные и удаленные репозитории Maven и выполнять мгновенные проверки наличия обновлений в окне 'Службы'. Любой артефакт, имеющийся в вашем локальном или удаленном репозитории можно добавить в качестве зависимости проекта. Можно развернуть узел локального репозитория в окне 'Службы', чтобы увидеть артефакты, которые присутствуют на локальном уровне. Артефакты, приведенные в узле удаленного репозитория, могут быть добавлены в качестве зависимостей проекта, однако не все из них представлены локально. Они добавляются к локальному репозиторию только в том случае, если объявляются в качестве зависимостей проекта.</p>
<p>Для обзора и обновления репозиториев Maven выполните следующие шаги.</p>
<ol>
<li>Выберите меню &quot;Окно&quot; &gt; &quot;Службы&quot;. Откроется окно &quot;Службы&quot;.</li>
<li>Разверните узел репозиториев Maven в окне 'Службы' для просмотра репозиториев.</li>
<li>Разверните узел репозитория для просмотра артефактов.</li>
<li>Щелкните правой кнопкой мыши узел репозитория и выберите 'Обновить индекс' в контекстном меню для обновления репозитория.</li>
</ol>
<img alt="Снимок репозиториев Maven в окне &apos;Службы&apos;" class="margin-around b-all" src="../../../images_www/articles/72/java/maven-create-se/maven-repositories.png" title="Репозитории Maven в окне &apos;Службы&apos;">
<p>Когда курсор находится над артефактом, среда IDE отображает всплывающую подсказку с координатами артефакта. Чтобы просмотреть дополнительную информацию об артефакте, дважды щелкните файл JAR артефакта..</p>
<p class="tips">Для поиска артефактов, щелкните правой кнопкой узел мыши узел 'Репозитории Maven' в окне 'Службы' и выберите 'Найти'.</p>
<p class="tips">Дополнительные сведения об управлении зависимостями путями к классам Maven и работе с репозиториями Maven в среде IDE см. в разделе <a href="http://wiki.netbeans.org/MavenBestPractices#section-MavenBestPractices-DependencyManagement">Управление зависимостями</a> в <a href="http://wiki.netbeans.org/MavenBestPractices">Best Practices for Apache Maven in IDE NetBeans</a>.
</p>
<p class="notes"><strong>Примечания для IDE NetBeans 7.1 и более ранних версий среды IDE.</strong></p>
<ul>
<li>Выберите пункт меню &quot;Окно &gt; Прочее &gt; Браузер репозиториев Maven&quot; для просмотра репозиториев Maven.</li>
<li>Вы можете использовать кнопки на панели инструментов в браузере репозиториев Maven для обновления индексов и поиска артефактов.</li>
</ul>
</div>
<a name="03"></a>
<h2>Создание приложения Maven</h2>
<p>В это учебном курсе мы создадим простой проект приложения Java Swing под названием DVDStoreAdmin. Проект будет создан на основе одного из включенных в набор архетипов Maven, после чего настройки проекта, определенные по умолчанию, будут изменены.</p>
<div class="indent">
<a name="03a"></a>
<h3>Выбор архетипа</h3>
<p>Мастер создания проектов позволяет создавать проекты Maven с помощью архетипа Maven. Среда IDE включает в себя несколько архетипов для общих типов проекта NetBeans, кроме того, в мастере можно выбрать архетипы из удаленных репозиториев. </p>
<ol>
<li>Выберите 'Файл' > 'Новый проект' (Ctrl-Shift-N; ⌘-Shift-N в Mac) в главном меню, чтобы открыть мастер создания проектов. </li>
<li>Выберите приложение Java из категорий Maven. Нажмите кнопку "Далее". <br> <img alt="Снимок архетипов Maven в мастере создания проектов" class="margin-around b-all" src="../../../images_www/articles/72/java/maven-create-se/maven-project-wizard.png" title="Архетипы Maven в мастере создания проектов"></li>
<li>Введите <strong>DVDStoreAdmin</strong> в качестве имени проекта и укажите местоположение проекта.</li>
<li>Измените указанные по умолчанию значения для &quot;Group Id&quot; и &quot;Version&quot; (необязательно).
<p>Значения &quot;Group Id&quot; и &quot;Version&quot; используются в качестве координат артефакта в локальном репозитории при создании проекта.</p></li>
<li>Нажмите кнопку &quot;Завершить&quot;.</li>
</ol>
<p>После нажатия кнопки &quot;Готово&quot; проект Maven будет создан в среде IDE и открыт в окне &quot;Проекты&quot;. Среда IDE автоматически создает класс <tt>App.java</tt> в пакете <tt>com.mycompany.dvdstoreadmin</tt>. Вы можете удалить этот класс (<tt>App.java</tt>), поскольку он не требуется приложению для работы.</p>
<p class="notes"><strong>Примечание.</strong> Если это первое создание проекта Maven, нужно будет загрузить необходимые подключаемые модули и артефакты в локальный репозиторий. Это может занять некоторое время.
</p>
<a name="03b"></a>
<h3>Изменение свойств проекта</h3>
<p>При создании проекта Maven с помощью мастера свойства этого проекта основываются на архетипе. В некоторых случаях может возникнуть необходимость изменения свойств, установленных по умолчанию, в соответствии с требованиями системы и проекта. Например, чтобы подтвердить, что в данном проекте уровень исходного кода установлен в 1.5 или выше, поскольку в проекте используются аннтации, выполните следующие действия.</p>
<ol>
<li>Щелкните правой кнопкой узел проекта и выберите команду &quot;Свойства&quot;.</li>
<li>Выберите в окне &quot;Свойства&quot; категорию &quot;Источники&quot;.</li>
<li>Убедитесь, что для выбранного в раскрывающемся списке формата 'Исходный/Двоичный' задано значение 1,5 или выше.</li>
<li>Для свойства &quot;Кодировка&quot; выберите из раскрывающегося списка значение &quot;UTF-8&quot;. Нажмите кнопку &quot;ОК&quot;. </li>
</ol>
</div>
<a name="04"></a>
<h2>Добавление файлов Hibernate и зависимостей</h2>
<p>Для добавления поддержки Hibernate необходимо сделать библиотеки Hibernate доступными, объявив необходимые артефакты в качестве зависимостей в POM. В среде IDE содержатся мастеры, упрощающие создание файлов библиотеки Hibernate, которые потребуются в проекте. Мастеры, включенные в среду IDE, могут использоваться для создания файла настройки библиотеки Hibernate и вспомогательного служебного класса. При создании файла настройки Hibernate с помощью мастера среда IDE автоматически обновляет POM для добавления зависимостей Hibernate в проект.</p>
<p>Зависимости к проекту можно добавить в окне &quot;Проекты&quot; или путем изменения файла <tt>pom.xml</tt>. Чтобы добавить зависимости в окне 'Проекты', щелкните правой кнопкой мыши узел 'Зависимости' в окне 'Проекты' и выберите 'Добавить зависимость' во вплывающем меню, чтобы открыть диалоговое окно 'Добавить зависимость'. При добавлении зависимостей среда IDE обновляет POM и загружает в локальный репозиторий все требуемые артефакты, отсутствующие в нем.</p>
<p>Для непосредственного изменения <tt>pom.xml</tt> откройте файл, раскрыв узел &quot;Файлы проекта&quot; в окне &quot;Проекта&quot; и дважды щелкнув <tt>pom.xml</tt>.
</p>
<a name="04a"></a>
<div class="indent">
<h3>Создание файла настройки библиотеки Hibernate</h3>
<p>Файл настройки библиотеки Hibernate (<tt>hibernate.cfg.xml</tt>) содержит информацию о подключении к базе данных, сопоставлениях ресурсов и других свойствах подключения. При создании файла настройки Hibernate с использованием мастера подключение к базе данных определяется путем выбора из списка подключений, зарегистрированных в среде IDE. В ходе создания файла настройки подробная информация о подключении и сведения о диалекте добавляются автоматически в соответствии с выбранным подключением к базе данных. Среда IDE автоматически изменяет POM, добавляя требуемые зависимости Hibernate. После создания файла настройки можно изменить файл с использованием редактора с несколькими представлениями или внести изменения в код XML непосредственно в редакторе XML.</p>
<ol>
<li>Щелкните правой кнопкой соединение с базой данных Sakila в окне &quot;Службы&quot; и выберите команду &quot;Подключить&quot;.</li>
<li>Щелкните правой кнопкой мыши узел &quot;Source Packages&quot; в окне &quot;Projects&quot; и выберите &quot;New &gt; Other&quot; для открытия мастера &quot;New File&quot;.</li>
<li>Выберите элемент &quot;Hibernate Configuration Wizard&quot; из категории &quot;Hibernate&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Сохраните имя файла по умолчанию (<tt>hibernate.cfg</tt>).</li>
<li>Нажмите кнопку &quot;Обзор&quot; и укажите для местоположения файла путь к каталогу <tt>src/main/resources</tt> (если он еще не указан). Нажмите кнопку &quot;Далее&quot;.</li>
<li>Выберите подключение &quot;sakila&quot; из раскрывающегося списка &quot;Database Connection&quot;. Нажмите кнопку &quot;Завершить&quot;.</li>
</ol>
<img alt="Снимок создания подключения к базе данных" class="margin-around b-all" height="193" src="../../../images_www/articles/72/java/hibernate-j2se/hib-config.png" title="Диалоговое окно для выбора подключения к базе данных" width="500">
<p>При нажатии кнопки &quot;Готово&quot; среда IDE открывает файл <tt>hibernate.cfg.xml</tt> в редакторе. Файл настройки содержит информацию об отдельной базе данных.
</p>
<p>Если развернуть узел &quot;Зависимости&quot; в окне проекта, можно убедиться, что среда IDE добавила необходимые артефакты Hibernate. Под узлом &quot;Зависимости&quot; среда IDE выводит все прямые и промежуточные зависимости, необходимые для компиляции проекта. Артефакты, являющиеся прямыми зависимостями (зависимостями, определенными в файле POM проекта), отмечены цветными значками JAR. Значок артефакта имеет серый цвет, если артефакт является промежуточной зависимостью (артефакт, являющийся зависимостью одной или нескольких прямых зависимостей). </p>
<img alt="Снимок зависимостей под узлом &apos;Библиотеки&apos; в окне &apos;Проекты&apos;" class="margin-around b-all" src="../../../images_www/articles/80/java/maven-create-se/maven-project-libs.png" title="Зависимости под узлом &apos;Библиотеки&apos; в окне &apos;Проекты&apos;">
<p>Для просмотра ведений об артефактах щелкните правой кнопкой мыши JAR и выберите 'Просмотреть сведения об артефактах'. Окно &quot;Artifact Viewer&quot; содержит вкладки, показывающие информацию о выделенных артефактах. Например, на вкладке &quot;Общие&quot; представлены подробные сведения о координатах артефакта и его доступных версиях. На вкладке &quot;График&quot; показано визуальное представление зависимостей выделенного артефакта.</p>
<img alt="снимок вкладки &apos;Графики&apos; или средства просмотра артефактов, в которых отображаются расхождения" class="margin-around b-all" src="../../../images_www/articles/72/java/maven-create-se/maven-artifacts-viewer.png" title="Вкладка &apos;Графики&apos; или средство просмотра артефактов, в которых отображаются расхождения">
<p class="tips">Также можно использовать вкладку &quot;График&quot; для обнаружения и устранения конфликта версий между зависимостями.</p>
<a name="04b"></a>
<h3>Изменение файла настройки библиотеки Hibernate</h3>
<p>В этом упражнении будут изменены свойства по умолчанию, указанные в <tt>hibernate.cfg.xml</tt>, для включения функции протоколирования отладки для операторов SQL. Данное упражнение не является обязательным.</p>
<ol>
<li>Откройте <tt>hibernate.cfg.xml</tt> на вкладке &quot;Проект&quot;. Для открытия файла можно развернуть узел &quot;Configuration Files&quot; в окне &quot;Projects&quot; и дважды щелкнуть <tt>hibernate.cfg.xml</tt>.</li>
<li>Разверните узел &quot;Configuration Properties&quot; в области &quot;Optional Properties&quot;.</li>
<li>Нажмите кнопку &quot;Add&quot; для открытия диалогового окна &quot;Add Hibernate Property&quot;.</li>
<li>В диалоговом окне выберите свойство <tt>hibernate.show_sql</tt> и установите значение <tt>true</tt>. Нажмите кнопку &quot;ОК&quot;. Это приведет ко включению протоколирования отладки операторов SQL.<br /> <img alt="Диалоговое окно &apos;Добавить свойство Hibernate&apos; для свойства hibernate.show_sql" class="margin-around b-all" height="161" src="../../../images_www/articles/72/java/hibernate-j2se/add-property-showsql.png" title="Диалоговое окно &apos;Добавить свойство Hibernate&apos;, в котором отображаются значения настроек для свойства hibernate.show_sql" width="392"></li>
<li>Щелкните &quot;Добавить&quot; в узле &quot;Различные свойства&quot; и выберите <tt>hibernate.query.factory_class</tt> в раскрывающемся списке &quot;Имя свойства&quot;.</li>
<li>Введите <strong>org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory</strong> в текстовое поле. Нажмите кнопку &quot;ОК&quot;.
<p class="notes"><strong>Примечание.</strong> Не выбирайте значение из раскрывающегося списка.</p>
<img alt="Диалоговое окно &apos;Добавить свойство Hibernate&apos; для свойств hibernate.query.factory_class" class="margin-around b-all" src="../../../images_www/articles/80/web/hibernate-webapp/add-property-factoryclass-4.png" title="Диалоговое окно &apos;Добавить свойство Hibernate&apos;, в котором отображаются значения настроек для свойства hibernate.query.factory_class property">
<p>При выборе вкладки &quot;XML&quot; в редакторе можно просмотреть файл в режиме XML. Файл должен выглядеть примерно так:</p>
<pre class="examplecode">&lt;hibernate-configuration&gt;
&lt;session-factory name="session1"&gt;
&lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;
&lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
&lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3306/sakila&lt;/property&gt;
&lt;property name="hibernate.connection.username"&gt;root&lt;/property&gt;
&lt;property name="hibernate.connection.password"&gt;######&lt;/property&gt;
&lt;property name="hibernate.show_sql"&gt;true&lt;/property&gt;
&lt;property name="hibernate.query.factory_class"&gt;org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory&lt;/property&gt;
&lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;</pre>
</li>
<li>Сохраните измененный файл.</li>
</ol>
<p>После запуска приложения появится возможность просмотра запроса SQL, представленного в окне &quot;Output&quot; среды IDE.</p>
<a name="04c"></a>
<h3>Создание вспомогательного файла <tt>HibernateUtil.java</tt></h3>
<p>Для использования библиотеки Hibernate необходимо создать вспомогательный класс для обработки запуска и обращения к <tt>SessionFactory</tt> библиотеки Hibernate для получения объекта &quot;Session&quot;. Класс обеспечивает вызов метода <tt>configure()</tt> библиотеки Hibernate, загрузку файла настройки <tt>hibernate.cfg.xml</tt> и последующую сборку <tt>SessionFactory</tt> для получения объекта &quot;Session&quot;.
</p>
<p>В этом разделе для создания вспомогательного класса <tt>HibernateUtil.java</tt> используется мастер создания файла.</p>
<ol>
<li>Щелкните правой кнопкой мыши узел &quot;Source Packages&quot; и выберите &quot;New &gt; Other&quot; для открытия мастера &quot;New File&quot;.</li>
<li>Выберите &quot;Hibernate&quot; из списка &quot;Categories&quot; и &quot;HibernateUtil.java&quot; из списка &quot;File Types&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите <strong>HibernateUtil</strong> в качестве имени класса и <strong>sakila.util</strong> в качестве имени пакета. Нажмите кнопку &quot;Завершить&quot;.</li>
</ol>
<img alt="снимок мастера создания служебных программ Hibernate" class="margin-around b-all" src="../../../images_www/articles/72/java/hibernate-j2se/maven-hibutil-wizard.png" title="Мастер служебных программ Hibernate" width="600">
<p>После нажатия кнопки &quot;Finish&quot; в редакторе откроется класс <tt>HibernateUtil.java</tt>. Файл можно закрыть, т.к. необходимость в его изменении отсутствует.</p>
</div>
<a name="05"></a>
<h2>Создание файлов сопоставления библиотеки Hibernate и классов Java</h2>
<p>В этом руководстве для отображения данных в таблице &quot;ACTOR&quot; базы данных используется простой старый объект Java (POJO) <tt>Actor.java</tt>. Класс указывает поля для столбцов в таблицах и использует простые методы установки и получения значений для извлечения и записи данных. Для сопоставления <tt>Actor.java</tt> с таблицей &quot;ACTOR&quot; можно использовать файл сопоставления библиотеки Hibernate или аннотации в классе.</p>
<p>Мастер обратного проектирования, файлы отображения библиотеки Hibernate и объекты POJO могут использоваться в мастере &quot;Database&quot; для создания нескольких объектов POJO и файлов отображения на основе выбранных таблиц базы данных. Кроме того, в среде IDE можно использовать мастеры для упрощения создания отдельных объектов POJO и файлов сопоставления &quot;с нуля&quot;.
</p>
<p class="notes"><strong>Примечание.</strong> При создании нескольких таблиц целесообразно использовать мастер. Однако в этом учебном курсе будет создан только один объект POJO и один файл отображения, поэтому можно создать эти файлы по отдельности. Действия по <a href="#10">созданию объектов POJO и файлов сопоставления по отдельности</a> приведены в конце данного учебного курса.</p>
<div class="indent">
<a name="05a"></a>
<h3>Создание файла обратного проектирования</h3>
<p>Для использования объектов POJO и файлов сопоставления в мастере &quot;База данных&quot; необходимо сначала создать файл обратного проектирования <tt>reveng.xml</tt> в папке <tt>src/main/resources</tt>, в которой был создан файл <tt>hibernate.cfg.xml</tt>.
</p>
<ol>
<li>Щелкните правой кнопкой мыши узел &quot;Source Packages&quot; и выберите &quot;New &gt; Other&quot; для открытия мастера &quot;New File&quot;.</li>
<li>В списке &quot;Categories&quot; выберите &quot;Hibernate&quot;, а в списке &quot;File Types&quot; выберите &quot;Hibernate Reverse Engineering Wizard&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите имя файла <strong>hibernate.reveng</strong>.</li>
<li>Определите <strong><tt>src/main/resources</tt></strong> в качестве местоположения. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Выберите элемент <strong>actor</strong> на панели &quot;Available Tables&quot; и нажмите кнопку &quot;Add&quot;. Нажмите кнопку &quot;Завершить&quot;.</li>
</ol>
<p>Мастер создает файл обратного проектирования <tt>hibernate.reveng.xml</tt>. Файл обратного проектирования можно закрыть, поскольку его изменение не требуется.</p>
<p class="notes"><strong>Примечание.</strong> Для этого проекта требуется библиотека jar коннектора MySQL (<tt>mysql-connector-jar-5.1.13.jar</tt>, например). Если подходящий JAR не указан как зависимость проекта в узле 'Зависимости', можно добавить зависимость, щелкнув правой кнопкой узел мыши узел 'Зависимости' и выбрав 'Добавить зависимость'.</p>
<h3>Создание файлов сопоставления библиотеки Hibernate и объектов POJO на основе базы данных</h3>
<p>Мастер создания файлов сопоставления библиотеки Hibernate и объектов POJO на основе базы данных создает файлы на основе таблиц, содержащихся в базе данных. При использовании этого мастера среда IDE создает объекты POJO и файлы отображения на основе таблиц базы данных, указанных в <tt>hibernate.reveng.xml</tt>, а затем добавляет записи отображения в файл <tt>hibernate.cfg.xml</tt>. При применении мастера можно выбрать файлы, которые должны быть созданы в среде IDE (например, только объекты POJO), и установить свойства создания кода (например, создание кода, использующего аннотации EJB 3).</p>
<ol>
<li>Щелкните правой кнопкой мыши узел &quot;Source Packages&quot; в окне &quot;Projects&quot; и выберите &quot;New &gt; Other&quot; для открытия мастера &quot;New File&quot;.</li>
<li>Выберите &quot;Hibernate Mapping Files and POJOs from a Database&quot; в категории &quot;Hibernate&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Выберите файл <tt>hibernate.cfg.xml</tt> из раскрывающегося списка &quot;Hibernate Configuration File&quot;, если он еще не выбран.</li>
<li>Выберите файл <tt>hibernate.cfg.xml</tt> из раскрывающегося списка &quot;Hibernate Reverse Engineering File&quot;, если он еще не выбран.</li>
<li>Убедитесь в том, что выбраны пункты <strong>Domain Code</strong> и <strong>Hibernate XML Mappings</strong>.</li>
<li>Введите <strong>sakila.entity</strong> в качестве имени пакета в поле &quot;Package&quot;. Нажмите кнопку &quot;Завершить&quot;.</li>
</ol>
<img alt="Мастер создания файлов сопоставления Hibernate и POJO" class="margin-around b-all" src="../../../images_www/articles/72/java/hibernate-j2se/mapping-pojos-wizard.png" title="Мастер создания файлов сопоставления Hibernate и POJO" width="600">
<p>
После нажатия кнопки &quot;Готово&quot; в среде IDE создается объект POJO <tt>Actor.java</tt> со всеми необходимыми полями, сохраняемый в папке <tt>src/main/java/sakila/entity</tt>. Кроме того, в среде IDE создается файл сопоставления библиотеки Hibernate в папке <tt>src/main/resources/sakila/entity</tt>, а запись сопоставления добавляется в файл <tt>hibernate.cfg.xml</tt>.
</p>
</div>
<p>
Теперь при наличии объектов POJO и необходимых файлов, связанных с библиотекой Hibernate для приложения можно создать простой внешний графический интерфейс пользователя на Java. Также необходимо создать, а затем добавить запрос HQL, обеспечивающий извлечение данных из базы данных. В рамках этого процесса для построения и тестирования запроса будет использован редактор HQL.</p>
<a name="06"></a>
<h2>Создание графического интерфейса пользователя приложения</h2>
<p>В этом упражнении будет создана простая форма JFrame с определенными полями для ввода и отображения данных. Также будет добавлена кнопка, инициирующая запрос к базе данных для извлечения данных.</p>
<p class="tips">При отсутствии знаний об использовании GUI Builder для создания форм можно ознакомиться с учебным курсом <a href="gui-functionality.html">Введение в разработку графического интерфейса</a>.
</p>
<a name="06a"></a>
<div class="indent">
<h3>Создание формы Jframe</h3>
<ol>
<li>Щелкните правой кнопкой мыши узел проекта в окне &quot;Projects&quot; и выберите &quot;New &gt; Other&quot; для открытия мастера создания файла.</li>
<li>Выберите шаблон &quot;JFrame Form&quot; из категории &quot;Swing GUI Forms&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите <strong>DVDStoreAdmin</strong> в поле &quot;Class Name&quot; и <strong>sakila.ui</strong> в поле &quot;Package&quot;. Нажмите кнопку &quot;Завершить&quot;.</li>
</ol>
<p>После нажатия кнопки &quot;Готово&quot; в среде IDE создается класс, а в представлении &quot;Дизайн&quot; редактора открывается форма JFrame.</p>
<a name="06b"></a>
<h3>Добавление элементов к форме</h3>
<p>Теперь необходимо добавить элементы пользовательского интерфейса к форме. При открытии формы в представлении &quot;Проект&quot; в правой части рабочей области среды IDE появляется элемент &quot;Палитра&quot;. Для добавления элемента к форме перетащите элемент с палитры в область формы. После добавления элемента к форме необходимо изменить значение по умолчанию свойства &quot;Variable Name&quot; для этого элемента.</p>
<ol>
<li>Перетащите элемент &quot;Label&quot; из палитры и измените текст на <strong>Actor Profile</strong>. </li>
<li>Перетащите элемент &quot;Label&quot; с палитры и измените текст на <strong>First Name</strong>.</li>
<li>Перетащите элемент &quot;Text Field&quot;, поместите его рядом с меткой &quot;First Name&quot; и удалите текст по умолчанию.
<p>При удалении текста по умолчанию текстовое поле сворачивается. Позже можно будет изменить размер текстового поля для настройки выравнивания элементов формы.</p></li>
<li>Перетащите элемент &quot;Label&quot; с палитры и измените текст на <strong>Last Name</strong>.</li>
<li>Перетащите элемент &quot;Text Field&quot;, поместите его рядом с меткой &quot;Last Name&quot; и удалите текст по умолчанию.</li>
<li>Перетащите элемент &quot;Button&quot; с палитры и измените текст на <strong>Query</strong>.</li>
<li>Перетащите элемент &quot;Table&quot; с палитры в форму.</li>
<li>Измените значения &quot;Variable Name&quot; следующих элементов пользовательского интерфейса в соответствии со значениями, приведенными в следующей таблице.
<p>Вы можете изменить значение 'Имя переменной' для элемента, щелкнув правой кнопкой мыши элемент в представлении конструктора и выбрав 'Изменить имя переменной'. Кроме того, значение &quot;Variable Name&quot; можно изменить непосредственно в окне &quot;Inspector&quot;.</p>
<p class="notes">Присвоение значений &quot;Variable Name&quot; элементам &quot;Label&quot; не требуется.</p>
<table>
<tr>
<th class="tblheader" scope="col">Элемент</th><th class="tblheader" scope="col">Имя переменной</th>
</tr>
<tr>
<td class="tbltd1">Текстовое поле &quot;First Name&quot;</td><td class="tbltd1"><tt>firstNameTextField</tt></td>
</tr>
<tr>
<td class="tbltd1">Текстовое поле &quot;Last Name&quot;</td><td class="tbltd1"><tt>lastNameTextField</tt></td>
</tr>
<tr>
<td class="tbltd1">Кнопка &quot;Query&quot;</td><td class="tbltd1"><tt>queryButton</tt></td>
</tr>
<tr>
<td class="tbltd1">Таблица</td><td class="tbltd1"><tt>resultTable</tt></td>
</tr>
</table>
</li>
<li>Измените размер текстового поля и выровняйте элементы формы.
<p>Можно активировать свойство &quot;Переменная ширина&quot; для текстовых полей, чтобы обеспечить изменение размера текстовых полей вместе с окном и идентичность расстояний между элементами.</p></li>
<li>Сохраните изменения.</li>
</ol>
<p>В режиме проектирования внешний вид формы выглядит так, как показано на следующем рисунке.</p>
<img alt="Форма графического интерфейса пользователя в представлении проектирования редактора" class="margin-around b-all" height="481" src="../../../images_www/articles/72/java/hibernate-j2se/hib-jframe-form.png" title="Форма графического интерфейса пользователя в представлении проектирования редактора" width="585">
<p>На этом этапе уже создана форма, и теперь необходимо создать код, обеспечивающий присваивание событий элементам формы. В следующем упражнении будут созданы запросы для извлечения данных на основе языка Hibernate Query Language. После создания запросов к форме будут добавлены методы, обеспечивающие вызов соответствующего запроса при нажатии кнопки &quot;Query&quot;.</p>
</div>
<a name="07"></a>
<h2>Создание запроса в редакторе запросов HQL Query Editor</h2>
<p>В среде IDE создание и тестирование запросов на основе языка Hibernate Query Language (HQL) может осуществляться с использованием редактора запросов HQL Query Editor. После ввода запроса в редакторе отображается эквивалентный (переведенный) запрос SQL. При нажатии кнопки &quot;Run HQL Query&quot; на панели инструментов в среде IDE запрос выполняется, а результаты отображаются в нижней области редактора.
</p>
<p>В этом упражнении редактор HQL Editor применяется для создания простых запросов HQL, позволяющих извлекать список подробных данных актеров на основе соответствия имени или фамилии. Перед добавлением запроса к классу редактор HQL Query Editor должен использоваться для проверки правильной работы подключения и корректности результатов запроса. Перед выполнением запроса необходимо скомпилировать приложение.</p>
<ol>
<li>Правой кнопкой мыши щелкните узел проекта и выберите команду &quot;Построить&quot;.
<p>При нажатии кнопки &quot;Сборка&quot; IDE загрузит необходимые артефакты в локальный репозиторий Maven.</p></li>
<li>Раскройте узел исходного пакета <tt>&lt;default package&gt;</tt> в узле &quot;Другие исходные файлы&quot; окна &quot;Проекты&quot;.</li>
<li>Щелкните правой кнопкой мыши файл <tt>hibernate.cfg.xml</tt> и выберите &quot;Run HQL Query&quot; для открытия редактора HQL Editor.</li>
<li>Протестируйте подключение путем ввода <tt>from Actor</tt> в редакторе запросов HQL Query Editor. Нажмите кнопку 'Выполнить запрос HQL' (&nbsp;<img alt="Кнопка &apos;Выполнить запрос HQL&apos;" height="16" src="../../../images_www/articles/72/java/hibernate-j2se/run_hql_query_16.png" title="Кнопка &apos;Выполнить запрос HQL&apos;" width="16" />&nbsp;) на панели инструментов.
<p>При нажатии кнопки &quot;Run HQL Query&quot; результаты запроса должны отображаться в нижней области редактора запросов HQL Query Editor.</p>
<img alt="Редактор запросов HQL с отображением результатов запроса HQL" class="margin-around b-all" height="370" src="../../../images_www/articles/72/java/hibernate-j2se/hib-query-hqlresults.png" title="Редактор запросов HQL с отображением результатов запроса HQL" width="585">
</li>
<li>Введите следующий запрос в редактор запросов HQL Query Editor и нажмите кнопку &quot;Выполнить запрос HQL&quot; для проверки результатов запроса при вводе значения &quot;PE&quot; в строку поиска.
<pre class="examplecode">from Actor a where a.firstName like 'PE%'</pre>
<p>Запрос возвращает список подробных данных тех актеров, чьи имена начинаются с символов &quot;PE&quot;.</p>
<p>При нажатии кнопки &quot;SQL&quot;, размещенной над результатами, на экране должен отобразиться соответствующий эквивалентный запрос SQL.</p>
<pre class="examplecode">select actor0_.actor_id as col_0_0_ from sakila.actor actor0_ where (actor0_.first_name like 'PE%' )</pre>
</li>
<li>Откройте новую вкладку редактора HQL Query Editor и введите следующий запрос на панели редактирования. Нажмите кнопку &quot;Run HQL Query&quot;.
<pre class="examplecode">from Actor a where a.lastName like 'MO%'</pre>
<p>Запрос возвращает список подробных данных актеров, чьи фамилии начинаются с символов &quot;МО&quot;.
</p>
</li>
</ol>
<p>Тестирование запросов показывает, что запросы возвращают требуемые результаты. Теперь необходимо внедрить запросы в приложение и обеспечить вызов соответствующего запроса путем нажатия кнопки &quot;Query&quot; в форме.</p>
<a name="08"></a>
<h2>Добавление запроса к форме</h2>
<p>Теперь необходимо изменить <tt>DVDStoreAdmin.java</tt> для добавления строк запроса и создания методов, позволяющих формировать и вызывать запрос, включающий входные переменные. Также требуется изменить обработчик событий нажатия кнопок для вызова соответствующего запроса и добавить метод, обеспечивающий отображение результатов запроса в таблице.</p>
<ol>
<li>Откройте <tt>DVDStoreAdmin.java</tt> и выберите вкладку &quot;Source&quot;.</li>
<li>Добавьте следующие строки запроса (выделенные полужирным шрифтом) к классу.
<pre class="examplecode">public DVDStoreAdmin() {
initComponents();
}
<strong>private static String QUERY_BASED_ON_FIRST_NAME="from Actor a where a.firstName like '";
private static String QUERY_BASED_ON_LAST_NAME="from Actor a where a.lastName like '";</strong></pre>
<p class="tips">Запросы можно скопировать из вкладок редактора запросов HQL Query Editor в файл, а затем изменить код.</p>
</li>
<li>Добавьте следующие методы для создания запроса на основе строки со вводимой пользователем информацией.
<pre class="examplecode">private void runQueryBasedOnFirstName() {
executeHQLQuery(QUERY_BASED_ON_FIRST_NAME + firstNameTextField.getText() + "%'");
}
private void runQueryBasedOnLastName() {
executeHQLQuery(QUERY_BASED_ON_LAST_NAME + lastNameTextField.getText() + "%'");
}</pre>
<p>Эти методы обеспечивают вызов метода с именем <tt>executeHQLQuery()</tt> и создание запроса путем объединения строки запроса с информацией пользователя, вводимой в строку поиска.</p>
</li>
<li>Добавьте метод <tt>executeHQLQuery()</tt>.
<pre class="examplecode">private void executeHQLQuery(String hql) {
try {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Query q = session.createQuery(hql);
List resultList = q.list();
displayResult(resultList);
session.getTransaction().commit();
} catch (HibernateException he) {
he.printStackTrace();
}
}</pre>
<p>Метод <tt>executeHQLQuery()</tt> обеспечивает вызов библиотеки Hibernate для выполнения выбранного запроса. В этом методе служебный класс <tt>HibernateUtil.java</tt> применяется для получения объекта Hibernate &quot;Session&quot;.</p>
</li>
<li>Исправьте параметры импорта для добавления операторов импорта в библиотеки Hibernate (<tt>org.hibernate.Query</tt>, <tt>org.hibernate.Session</tt>) и <tt>java.util.List</tt>.</li>
<li>Создайте обработчик событий для кнопки &quot;Query&quot;, переключившись в режим проектирования и дважды нажав кнопку &quot;Query&quot;.
<p>В среде IDE будет создан метод <tt>queryButtonActionPerformed</tt>, который затем отобразится в режиме просмотра исходного кода.</p></li>
<li>Измените метод <tt>queryButtonActionPerformed</tt> в режиме просмотра исходного кода путем добавления следующего кода, обеспечивающего выполнение запроса при нажатии кнопки пользователем.
<pre class="examplecode">private void queryButtonActionPerformed(java.awt.event.ActionEvent evt) {
<strong>if(!firstNameTextField.getText().trim().equals("")) {
runQueryBasedOnFirstName();
} else if(!lastNameTextField.getText().trim().equals("")) {
runQueryBasedOnLastName();
}</strong>
}</pre>
</li>
<li>Добавьте следующий метод для просмотра результатов в &quot;JTable&quot;.
<pre class="examplecode">private void displayResult(List resultList) {
Vector&lt;String&gt; tableHeaders = new Vector&lt;String&gt;();
Vector tableData = new Vector();
tableHeaders.add("ActorId");
tableHeaders.add("FirstName");
tableHeaders.add("LastName");
tableHeaders.add("LastUpdated");
for(Object o : resultList) {
Actor actor = (Actor)o;
Vector&lt;Object&gt; oneRow = new Vector&lt;Object&gt;();
oneRow.add(actor.getActorId());
oneRow.add(actor.getFirstName());
oneRow.add(actor.getLastName());
oneRow.add(actor.getLastUpdate());
tableData.add(oneRow);
}
resultTable.setModel(new DefaultTableModel(tableData, tableHeaders));
}</pre>
</li>
<li>Исправьте параметры импорта (CTRL+SHIFT+I) для добавления <tt>java.util.Vector</tt> и сохраните измененные данные.</li>
</ol>
<p>После сохранения формы можно запустить проект.</p>
<!-- Running a Maven Project -->
<a name="09"></a>
<h2>Запуск проекта Maven</h2>
<p>
После завершения написания программы вы можете создать проект и запустить приложение. При создании проекта Maven в среде IDE, Maven считывает POM проекта для идентификации его зависимостей. Все артефакты, определенные как зависимости, должны при этом находиться в локальном репозитории Maven. Если требуемый артефакт отсутствует в локальном репозитории, то перед попыткой создания и запуска проекта Maven выполнит его поиск в удаленном репозитории. После создания проекта Maven установит сгенерированный двоичный файл в качестве артефакта в локальном репозитории.
</p>
<p class="notes"><strong>Примечания.</strong></p>
<div class="indent">
<ul>
<li>Создание и выполнение проекта в первый раз может занять некоторое время на проверку средой IDE всех зависимостей проекта. Последующие создания выполняются намного быстрее.</li>
<li>Для запуска данного приложения сначала необходимо определить класс Main.</li>
</ul>
</div>
<p>Чтобы скомпилировать и запустить приложение выполните следующие действия.</p>
<ol>
<li>Щелкните правой кнопкой мыши узел проекта в окне &quot;Проекты&quot; и выберите команду &quot;Свойства&quot;.</li>
<li>Выберите категорию 'Выполнить' в диалоговом окне 'Свойства проекта'.</li>
<li>Введите <strong>sakila.ui.DVDStoreAdmin</strong> в поле &quot;Main Class&quot;. Нажмите кнопку &quot;ОК&quot;.
<p>В качестве альтернативы можно нажать кнопку &quot;Browse&quot; и выбрать главный класс в диалоговом окне.</p>
<img alt="Установка главного класса в диалоговом окне &apos;Обзор главных классов&apos;" class="margin-around b-all" height="201" src="../../../images_www/articles/72/java/hibernate-j2se/browse-main-class.png" title="Установка главного класса в диалоговом окне &apos;Обзор главных классов&apos;" width="339">
</li>
<li>Нажмите кнопку &quot;Run Project&quot; на главной панели инструментов для запуска приложения.</li>
</ol>
<p>При вызове в среде IDE в проекте Maven операции Run параметры Maven выполняются в среде IDE совместно с операцией Run. Среда IDE имеет цели по умолчанию, связанные с операциями IDE, соответствующими упаковке проекта. Связанные с операцией Run цели можно просмотреть на панели &quot;Действия&quot; окна &quot;Свойства&quot; проекта.</p>
<img alt="Панель &apos;Действия&apos; окна свойств проекта DVDStoreAdmin" class="margin-around b-all" src="../../../images_www/articles/72/java/hibernate-j2se/maven-projectproperties.png" title="Панель &apos;Действия&apos; окна свойств проекта DVDStoreAdmin" width="600">
<p class="tips">Можно настроить привязку целей к операциям в панели &quot;Действия&quot; окна проекта &quot;Свойства&quot;.</p>
<p>Форма графического интерфейса открывается при запуске приложения. Введите информацию в строке поиска для текстовых полей &quot;First Name&quot; или &quot;Last Name&quot; и нажмите кнопку &quot;Query&quot; для поиска актера и просмотра подробных данных. </p>
<img alt="Приложение DVDStoreAdmin с отображением результатов" class="margin-around b-all" height="423" src="../../../images_www/articles/72/java/hibernate-j2se/application-run.png" title="Приложение DVDStoreAdmin с отображением результатов" width="575">
<p>При вызове окна &quot;Output&quot; в среде IDE можно просмотреть запрос SQL, инициировавший извлечение представленных результатов.</p>
<div class="indent">
<a name="09a"></a>
<h3>Загрузка проекта решения</h3>
<p>Решение для данного учебного курса в виде проекта можно загрузить несколькими способами.</p>
<ul>
<li>Загрузите <a href="https://netbeans.org/projects/samples/downloads/download/Samples/Java/DVDStoreAdmin-Maven.zip">архив завершенного проекта в формате zip</a>.</li>
<li>Выполните проверку исходных файлов проекта на выходе из примеров NetBeans, выполнив перечисленные ниже действия.
<ol>
<li>Выберите в главном меню &quot;Группа &gt; Subversion &gt; Проверить&quot;.</li>
<li>В диалоговом окне &quot;Проверка&quot; введите следующий URL-адрес репозитория:<br /> <tt>https://svn.netbeans.org/svn/samples~samples-source-code</tt><br /> Нажмите кнопку &quot;Далее&quot;.</li>
<li>Нажмите кнопку &quot;Обзор&quot; для открытия диалогового окна &quot;Обзор папок репозитория&quot;.</li>
<li>Разверните корневой узел и выберите <strong>samples/java/DVDStoreAdmin-Maven</strong>. Нажмите кнопку &quot;ОК&quot;.</li>
<li>Укажите локальную папку для исходных файлов (папка должна быть пустой).</li>
<li>Нажмите кнопку &quot;Завершить&quot;.
<p>После нажатия кнопки &quot;Готово&quot; среда IDE инициализирует локальную папку в качестве репозитория Subversion и выполняет проверку исходных файлов проекта на выходе.</p>
</li>
<li>Щелкните команду &quot;Открыть проект&quot; в диалоговом окне, которое появится после завершения проверки.</li>
</ol>
<p class="notes"><strong>Примечания.</strong></p>
<ul>
<li>Шаги для изъятия для использования источников из Kenai применимы только к IDE NetBeans 6.7 или 6.8.</li>
<li>Для получения исходных файлов на редактирование из Kenai требуется клиент Subversion. Дополнительные сведения об установке Subversion см. в разделе <a href="../ide/subversion.html#settingUp">Настройка Subversion</a> в <a href="../ide/subversion.html">Руководстве по Subversion в IDE NetBeans</a>.</li>
</ul>
</li>
</ul>
</div>
<a name="10"></a>
<h2>Создание объектов POJO и файлов сопоставления по отдельности</h2>
<p>Поскольку POJO представляет собой простой класс Java, вы можете использовать мастер создания классов Java, чтобы создать класс, а затем изменить класс в редакторе исходного кода, чтобы добавить необходимые поля и методы получения и установки. После создания объекта POJO мастер также можно использовать для создания файла сопоставления библиотеки Hibernate, обеспечивающего сопоставления класса с таблицей, и добавления информации о сопоставлении в файл <tt>hibernate.cfg.xml</tt>. При создании файла сопоставления &quot;с нуля&quot; необходимо сопоставить поля и столбцы в редакторе XML.</p>
<p class="notes"><strong>Примечание.</strong> Это упражнение является необязательным и описывает создание POJO и файла сопоставления, созданных с помощью файлов сопоставления библиотеки Hibernate и POJO из мастера баз данных.</p>
<ol>
<li>Щелкните правой кнопкой мыши узел &quot;Source Packages&quot; в окне &quot;Projects&quot; и выберите &quot;New &gt; Java Class&quot; для открытия мастера создания класса Java.</li>
<li>В мастере введите <b>Actor</b> в качестве имени класса и <b>sakila.entity</b> в качестве имени пакета. Нажмите кнопку &quot;Завершить&quot;.</li>
<li>Внесите в класс следующие изменения (выделены полужирным шрифтом) для реализации интерфейса &quot;Serializable&quot; и добавьте поля для столбцов таблицы.
<pre class="examplecode">public class Actor <b>implements Serializable</b> {
<b>private Short actorId;
private String firstName;
private String lastName;
private Date lastUpdate;</b>
}</pre>
</li>
<li>Создайте методы получения и установки для полей, поместив курсор вставки в редактор исходного кода и введя Alt-Insert, а затем выбрав Getter и Setter.</li>
<li>В диалоговом окне &quot;Generate Getters and Setters&quot; выберите все поля и нажмите кнопку &quot;Generate&quot;.<br /> <img alt="Диалоговое окно &apos;Создание методов получения и установки&apos;" class="margin-around b-all" height="246" src="../../../images_www/articles/72/java/hibernate-j2se/getters-setters.png" title="Диалоговое окно &apos;Создание методов получения и установки&apos;" width="359">
<p class="tips">В диалоговом окне &quot;Generate Getters and Setters&quot; можно использовать стрелку вверх на клавиатуре для перемещения выбранного элемента к узлу &quot;Actor&quot;, а затем нажать клавишу &quot;пробел&quot; и выбрать все поля &quot;Actor&quot;.</p></li>
<li>Исправьте операторы импорта и сохраните измененные данные.</li>
</ol>
<p>После создания объекта POJO для таблицы необходимо создать файл сопоставления библиотеки Hibernate для класса <tt>Actor.java</tt>.</p>
<ol>
<li>Щелкните правой кнопкой мыши узел исходных файлов <tt>sakila.entity</tt> в окне &quot;Projects&quot; и выберите &quot;New &gt; Other&quot; для открытия мастера создания файла &quot;New File&quot;.</li>
<li>Выберите &quot;Файл сопоставления Hibernate&quot; в категории &quot;Hibernate&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите <strong>Actor.hbm</strong> в поле &quot;Имя файла&quot; и укажите в качестве папки <b>src/sakila/entity</b>. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите <b>sakila.entity.Actor</b> в поле &quot;Класс для размещения&quot;.</li>
<li>Выберите <b>actor</b> из раскрывающегося списка &quot;Таблица базы данных&quot;, если это значение не было выбрано ранее. Нажмите кнопку &quot;Завершить&quot;.<br /> <img alt="Мастер создания файлов сопоставления Hibernate" class="margin-around b-all" height="272" src="../../../images_www/articles/72/java/hibernate-j2se/mapping-wizard.png" title="Мастер создания файлов сопоставления Hibernate" width="586">
<p>После выбора 'Готово' файл сопоставления Hibernate <tt>Actor.hbm.xml</tt> открывается в редакторе исходного кода. Также в среде IDE выполняется автоматическое добавление записи для ресурса сопоставления в <tt>hibernate.cfg.xml</tt>. В целях просмотра подробных данных разверните узел &quot;Mapping&quot; в режиме проектирования <tt>hibernate.cfg.xml</tt> или в режиме XML. Запись <tt>mapping</tt> в обзоре XML будет выглядеть следующим образом:
</p>
<pre class="examplecode">
&lt;mapping resource="sakila/entity/Actor.hbm.xml"/&gt;
&lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;</pre>
</li>
<li>Сопоставьте поля в <tt>Actor.java</tt> со столбцами в таблице &quot;ACTOR&quot; путем внесения следующих изменений (выделены полужирным шрифтом) в <tt>Actor.hbm.xml</tt>.
<pre class="examplecode">&lt;hibernate-mapping>
&lt;class name="sakila.entity.Actor" <strong>table="actor"&gt;
&lt;id name="actorId" type="java.lang.Short"&gt;
&lt;column name="actor_id"/&gt;
&lt;generator class="identity"/&gt;
&lt;/id&gt;
&lt;property name="firstName" type="string"&gt;
&lt;column length="45" name="first_name" not-null="true"/&gt;
&lt;/property&gt;
&lt;property name="lastName" type="string"&gt;
&lt;column length="45" name="last_name" not-null="true"/&gt;
&lt;/property&gt;
&lt;property name="lastUpdate" type="timestamp"&gt;
&lt;column length="19" name="last_update" not-null="true"/&gt;
&lt;/property&gt;
&lt;/class&gt;</strong>
&lt;/hibernate-mapping&gt;</pre>
<p class="tips">Для заполнения значений при изменении файла сопоставления можно использовать функцию автозавершения кода.</p>
<p class="notes"><b>Примечание.</b> По умолчанию у созданного элемента <tt>class</tt> имеется закрывающий тег. Поскольку элементы свойства необходимо добавить между открывающим и закрывающим тегами элемента <tt>class</tt>, следует внести следующие изменения (выделены полужирным шрифтом). После внесения изменений можно использовать функцию автозавершения кода между тегами <tt>class</tt>.</p>
<pre class="examplecode">&lt;hibernate-mapping&gt;
&lt;class name="sakila.entity.Actor" <strong>table="actor"&gt;
&lt;/class&gt;</strong>
&lt;/hibernate-mapping&gt;</pre>
</li>
<li>Нажмите кнопку &quot;Validate XML&quot; на панели инструментов и сохраните изменения.</li>
</ol>
<p>Создание объектов POJO и файлов сопоставления библиотеки Hibernate может эффективно использоваться для дальнейшей настройки приложения.</p>
<div class="feedback-box"><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Creating%20a%20Maven%20Project">Отправить отзыв по этому учебному курсу</a></div>
<br style="clear:both;" />
<h2>Дополнительные сведения</h2>
<p>Для получения дополнительных сведений о создании приложений с графическим интерфейсом пользователя на базе Swing см. следующие учебные курсы.</p>
<ul>
<li><a href="quickstart-gui.html">Разработка Swing GUI в IDE NetBeans</a></li>
<li><a href="gui-functionality.html">Введение в разработку графического интерфейса </a></li>
<li><a href="../../trails/matisse.html">Учебная карта по приложениям с графическим интерфейсом Java </a></li>
</ul>
</body>
</html>