blob: 94290f1a04a2f94f5b1365c0b71108b50a49a183 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
<title>Использование Hibernate в приложении Swing Java – учебное руководство по IDE NetBeans</title>
<!-- BEGIN METADATA -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="description" content="Demonstrates how use Hibernate as the persistence layer in a Java Swing application.">
<meta name="KEYWORDS" content="NetBeans, Hibernate, Swing, J2SE, Java SE">
<link rel="stylesheet" href="../../../netbeans.css" type="text/css">
<!-- END METADATA -->
</head>
<body>
<a name="top"></a>
<h1>Использование библиотеки Hibernate в приложении Java на базе Swing</h1>
<p>В этом учебном руководстве IDE NetBeans используется для создания и развертывания приложения Swing Java, в котором отображаются данные из базы данных. Приложение использует библиотеку Hibernate в качестве слоя сохранения состояния для извлечения POJO (простых объектов Java) из реляционной базы данных.</p>
<p>Библиотека Hibernate предоставляет средства для объектно-реляционного сопоставления (ORM). В руководстве демонстрируется поддержка библиотеки Hibernate в среде IDE и использование мастеров для создания необходимых файлов Hibernate. После создания объектов Java и настройки приложения для использования Hibernate создается графический пользовательский интерфейс для поиска и отображения данных.</p>
<p>
Приложение, создаваемое в этом курсе, представляет собой средство администрирования, дополняющее <a href="../web/hibernate-webapp.html">веб-приложение &quot;DVD Store&quot;</a>. В данном руководстве описывается создание приложения, позволяющего запрашивать подробные данные актера на основе соответствия имени или фамилии. При необходимости приложение можно расширить путем добавления функциональных возможностей запроса подробных данных о фильме, а также добавления/обновления/удаления объектов. В рамках руководства используется СУБД MySQL и база данных &quot;Sakila&quot;, однако в приложениях Hibernate допускается использование любого поддерживаемого сервера базы данных. База данных &quot;Sakila&quot; представляет собой типовую базу данных, которая может быть загружена с сайта MySQL. Информация о настройке базы данных &quot;Sakila&quot; приведена в следующих разделах. </p>
<p>Перед изучением этого учебного курса можно ознакомиться со следующей документацией:</p>
<ul>
<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">Сведения о создании этого приложения с помощью Maven см. в разделе <a href="maven-hib-java-se.html">Создание приложения Maven Swing с помощью Hibernate</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">Создание проекта приложения Java на базе Swing</a></li>
<li><a href="#03">Добавление поддержки библиотеки Hibernate к проекту</a>
<ul>
<li><a href="#03a">Создание файла настройки библиотеки Hibernate</a></li>
<li><a href="#03b">Изменение файла настройки библиотеки Hibernate</a></li>
<li><a href="#03c">Создание служебного файла <tt>HibernateUtil.java</tt></a></li>
</ul>
</li>
<li><a href="#05">Создание файлов отображения библиотеки Hibernate и классов Java</a>
<ul>
<li><a href="#05a">Создание файла обратного проектирования</a></li>
<li><a href="#05b">Создание файлов отображения библиотеки 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">Выполнение проекта</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="https://netbeans.org/downloads/index.html">IDE NetBeans</a></td>
<td class="tbltd1">7.2, 7.3, 7.4, 8.0, Java</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">Комплект для разработчика на языке Java (JDK)</a></td>
<td class="tbltd1">версия 7 или 8</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 class="tips">Можно загрузить <a href="https://netbeans.org/projects/samples/downloads/download/Samples/Java/DVDStoreAdmin-Ant.zip">готовый проект в виде архива ZIP</a>.</p>
<a name="01"></a>
<h2>Создание базы данных</h2>
<p>В этом учебном курсе используется база данных MySQL с названием <tt>sakila</tt>. Пример базы данных не входит в устанавливаемую в среду IDE, поэтому перед изучением этого учебного курса необходимо создать базу данных.
</p>
<p>База данных &quot;Sakila&quot; представляет собой свободно распространяемый пример базы данных, который можно загрузить с сайта 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>Щелкните правой кнопкой мыши узел сервера MySQL и выберите Create Database (&quot;Создать базу данных&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>При нажатии кнопки &quot;OK&quot; узел &quot;Sakila&quot; появится под узлом &quot;MySQL Server&quot;.</p>
<li>Щелкните правой кнопкой мыши узел &quot;Sakila&quot; и выберите &quot;Connect&quot;.</li>
</ol>
<p>После нажатия кнопки &quot;Connect a database&quot; под узлом &quot;Databases&quot; отобразится узел подключения к базе данных &quot;Sakila&quot; (<tt>jdbc:mysql://localhost:3306/sakila [<i>username</i> on Default]</tt>). При открытом подключении для просмотра данных в базе данных разверните этот узел подключения.</p>
<a name="02"></a>
<h2>Создание проекта приложения Java на базе Swing</h2>
<p>В этом упражнении будет создан простой проект приложения Java на базе Swing с именем &quot;DVDStoreAdmin&quot;.
</p>
<ol>
<li>Выберите команду &quot;Файл&quot; &gt; &quot;Создать проект&quot; (CTRL+SHIFT+N). Выберите приложение Java из категории Java и нажмите &quot;Next&quot;. </li>
<li>Введите <b>DVDStoreAdmin</b> в качестве имени проекта и укажите местоположение проекта.</li>
<li>Снимите флажок &quot;Использовать отдельную папку&quot;, если он установлен.<br /> В рамках этого руководства копирование библиотек проекта в выделенную папку лишено смысла, поскольку совместное использование библиотек с другими пользователями не потребуется.</li>
<li>Снимите флажок &quot;Create Main Class&quot;. Нажмите кнопку &quot;Завершить&quot;.</li>
</ol>
<p>При нажатии кнопки &quot;Finish&quot; в среде IDE будет создан проект приложения Java. В проекте нет главного класса. Следует создать форму и установить ее в качестве главного класса.</p>
<a name="03"></a>
<h2>Добавление поддержки библиотеки Hibernate к проекту</h2>
<p>Для добавления поддержки библиотеки Hibernate к проекту J2SE необходимо добавить библиотеку Hibernate в проект. Библиотека Hibernate входит в состав IDE и может быть добавлена к любому проекту. Для этого щелкните правой кнопкой мыши узел 'Библиотеки' в окне 'Проекты', выберите 'Добавить библиотеку', а затем выберите библиотеку Hibernate в диалоговом окне 'Добавить библиотеку'.</p>
<p>В среде IDE содержатся мастеры, упрощающие создание файлов библиотеки Hibernate, которые потребуются в проекте. Мастеры, включенные в среду IDE, могут использоваться для создания файла настройки библиотеки Hibernate и вспомогательного служебного класса. Если файл настройки библиотеки Hibernate создан с использованием мастера, библиотеки Hibernate автоматически добавляются к проекту.</p>
<a name="03a"></a>
<div class="indent">
<h3>Создание файла настройки библиотеки Hibernate</h3>
<p>Файл настройки библиотеки Hibernate (<tt>hibernate.cfg.xml</tt>) содержит информацию о подключении к базе данных, сопоставлениях ресурсов и других свойствах подключения. При создании файла настройки Hibernate с использованием мастера подключение к базе данных определяется путем выбора из списка подключений, зарегистрированных в среде IDE. В ходе создания файла настройки подробная информация о подключении и сведения о диалекте добавляются автоматически в соответствии с выбранным подключением к базе данных. В среде IDE библиотека Hibernate также автоматически добавляется в путь класса проекта. После создания файла настройки можно изменить файл с использованием редактора с несколькими представлениями или внести изменения в код XML непосредственно в редакторе XML.</p>
<ol>
<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>Оставьте значения по умолчанию на панели &quot;Имя и местоположение&quot; (создается файл в каталоге <tt>src</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;Finish&quot; файл <tt>hibernate.cfg.xml</tt> откроется в редакторе исходного кода в среде IDE. В среде IDE файл настройки создается в корне контекстного пути к классам приложения (в окне &quot;Files&quot;, &quot;WEB-INF/classes&quot;). В окне 'Проекты' файл находится в исходном пакете <tt>&lt;пакет, заданный по умолчанию></tt>. Файл настройки содержит информацию об отдельной базе данных. Если планируется подключение к нескольким базам данных, в проекте можно создать несколько файлов настройки (по одному для каждого сервера базы данных), но по умолчанию во вспомогательном служебном классе будет использоваться файл <tt>hibernate.cfg.xml</tt>, расположенный в корневом каталоге.</p>
<p>После разворачивания узла &quot;Libraries&quot; в окне &quot;Projects&quot; видно, что к проекту добавлены требуемые архивы JAR библиотеки Hibernate и архив JAR соединителя MySQL.</p>
<img alt="Снимок окна &apos;Проекты&apos;, в котором отображаются библиотеки Hibernate" class="margin-around b-all" src="../../../images_www/articles/80/java/hibernate-j2se/hib-libraries-config.png" title="Снимок окна &apos;Проекты&apos;, в котором отображаются библиотеки Hibernate">
<p class="notes"><strong>Примечание.</strong> В среду NetBeans IDE 8.0 входят библиотеки Hibernate 4. Старые версии IDE, связанные с Hibernate 3.</p>
<a name="03b"></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/80/web/hibernate-webapp/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> в качестве значения свойства.
<p>Класс 'translator factory' используется в библиотеке Hibernate 4, связанной с IDE. </p>
<p>Нажмите кнопку &quot;ОК&quot;.</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 class="alert">При использовании NetBeans IDE 7.4 или более ранней версии необходимо выбрать <strong>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</strong> в качестве значения свойства в диалоговом окне. NetBeans IDE 7.4 и более ранние версии, связанные с библиотекой Hibernate 3.
</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.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 запросов, выведенные на печать в окне вывода IDE при выполнении проекта.</p>
<a name="03c"></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;.<br> <img alt="Описание создания HibernateUtil с помощью мастера создания файлов" class="margin-around b-all" src="../../../images_www/articles/80/java/hibernate-j2se/hib-util.png" title="Описание создания HibernateUtil с помощью мастера создания файлов"></li>
<li>Введите <strong>HibernateUtil</strong> в качестве имени класса и <strong>sakila.util</strong> в качестве имени пакета. Нажмите кнопку &quot;Завершить&quot;.</li>
</ol>
<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></p>
<div class="indent">
<ul>
<li>При создании нескольких таблиц целесообразно использовать мастер. Однако в этом учебном курсе будет создан только один объект POJO и один файл отображения, поэтому можно создать эти файлы по отдельности. Действия по <a href="#10">созданию объектов POJO и файлов сопоставления по отдельности</a> приведены в конце данного учебного курса.</li>
</ul>
</div>
<div class="indent">
<a name="05a"></a>
<h3>Создание файла обратного проектирования</h3>
<p>Файл обратного проектирования (<tt>hibernate.reveng.xml</tt>) является файлом XML, который можно использовать для изменения настроек по умолчанию, примененных при создании файлов Hibernate из метаданных базы данных, определенной в <tt>hibernate.cfg.xml</tt>. Мастер создает файл с основными настройками по умолчанию. Можно изменить файл и явным образом указать используемую схему базы данных, отфильтровать таблицы, которые не следует использовать, а также указать, как типы JDBC сопоставляются с типами Hibernate.</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</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>
<a name="05b"></a>
<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-ant.png" title="Мастер создания файлов сопоставления Hibernate и POJO" width="600">
<p>
После нажатия кнопки &quot;Finish&quot; в среде IDE создается объект POJO <tt>Actor.java</tt> со всеми необходимыми полями и файл сопоставления библиотеки Hibernate; кроме того, в файл <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>Теперь необходимо добавить элементы пользовательского интерфейса к форме. При открытии формы в режиме проектирования в редакторе в левой части рабочей области среды IDE появляется палитра. Для добавления элемента к форме перетащите элемент с палитры в область формы. После добавления элемента к форме необходимо изменить значение по умолчанию свойства &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; и удалите текст по умолчанию.</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>Сохраните изменения.</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;.</li>
<li>Разверните исходный узел пакета &lt;default package&gt; в окне &quot;Projects&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>Щелкните правой кнопкой мыши в редакторе и выберите 'Исправить выражения импорта' (Ctrl-Shift-I; ⌘-Shift-I в Mac) для создания операторов импорта для библиотек 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; ⌘-Shift-I в Mac) для создания оператора импорта для <tt>java.util.Vector</tt> и <tt>java.util.List</tt>. Сохраните изменения.</li>
</ol>
<p>После сохранения формы можно запустить проект.</p>
<a name="09"></a>
<h2>Выполнение проекта</h2>
<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>Введите информацию в строке поиска для текстовых полей &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-Ant.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-Ant</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> Для получения исходных файлов на редактирование требуется клиент Subversion. Дополнительные сведения об установке Subversion см. в разделе <a href="../ide/subversion.html#settingUp">Настройка Subversion</a> в <a href="../ide/subversion.html">Руководстве по Subversion в IDE NetBeans</a>.</p>
</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, Ctrl-I на Mac) и выберите методы получения и установки в контекстном меню для создания методов получения и установки для полей.</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 Mapping File&quot; в категории &quot;Hibernate&quot;. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите <strong>Actor.hbm</strong> в поле &quot;File Name&quot; и убедитесь в том, что выбрана папка <b>src/sakila/entity</b>. Нажмите кнопку &quot;Далее&quot;.</li>
<li>Введите <b>sakila.entity.Actor</b> в поле &quot;Class to Map&quot; и выберите <b>actor</b> из раскрывающегося списка &quot;Database Table&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:%20Using%20Hibernate%20in%20a%20Java%20Swing%20Application">Отправить отзыв по этому учебному курсу</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>