| <!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">Создание формы "Jframe"</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">База данных "Sakila"</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. Для создания базы данных "Sakila" можно загрузить и установить подключаемый модуль "Sakila Sample Database" с использованием диспетчера подключаемых модулей. После установки подключаемого модуля можно создать базу данных "Sakila" в окне "Services". База данных "Sakila" будет добавлена к списку баз данных в диалоговом окне "Create MySQL database".</p> |
| <p>Для получения дополнительной информации о настройке среды IDE для работы с MySQL см. учебный курс <a href="../ide/mysql.html">Подключение к базе данных MySQL</a>.</p> |
| |
| <ol> |
| <li>Откройте диспетчер подключаемых модулей и установите подключаемый модуль "Sakila Sample Database".</li> |
| <li>После установки подключаемого модуля, запустите сервера MySQL базы данных путем расширения узла 'Базы данных' в окне 'Службы', щелкните правой кнопкой мыши узел MySQL Server и выберите 'Запустить'.</li> |
| <li>Щелкните правой кнопкой мыши узел "MySQL Server" и выберите "Create Database".</li> |
| <li>Выберите базу данных "Sakila"из раскрывающегося списка "New Database Name" в диалоговом окне "Create MySQL Database". Нажмите кнопку "ОК".<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 и заполнит ее таблицы. Результаты работы сценария можно увидеть в окне "Результаты". В серверный узел MySQL будет добавлен подузел для базы данных Sakila.</p> |
| <li>Щелкните правой кнопкой мыши узел "Sakila" и выберите "Connect".</li> |
| </ol> |
| <p>При нажатии кнопки "Подключиться" узел подключения к базе данных "Sakila" (<tt>jdbc:mysql://localhost:3306/sakila [по умолчанию: <i>username</i>]</tt>) появится под узлом "Базы данных". При открытом подключении для просмотра данных в базе данных разверните этот узел подключения.</p> |
| |
| |
| <!-- ++++++++++++++ Configuring Maven ++++++++++++++ --> |
| |
| <a name="02"></a> |
| <h2>Настройка Maven</h2> |
| |
| <p>Maven входит в комплект среды IDE и устанавливается вместе с ней, но если это ваш первый проект Maven, следует проверить параметры конфигурации Maven в окне "Параметры". |
| </p> |
| |
| <ol> |
| <li>Откройте окно 'Настройки' в IDE (Сервис > Параметры; NetBeans> Предпочтения на Mac).</li> |
| <li>Выберите в окне "Параметры" категорию "Java" и перейдите на вкладку "Maven".</li> |
| <li>Подтвердите указание домашней страницы Maven. |
| <p>Можно использовать версию Maven, входящую в комплект среды IDE, либо указать местоположение локальной установки Maven (требуется версия 2.0.9 или более поздняя).</p></li> |
| <li>Для закрытия окна "Параметры" нажмите кнопку "ОК".</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>Выберите меню "Окно" > "Службы". Откроется окно "Службы".</li> |
| <li>Разверните узел репозиториев Maven в окне 'Службы' для просмотра репозиториев.</li> |
| <li>Разверните узел репозитория для просмотра артефактов.</li> |
| <li>Щелкните правой кнопкой мыши узел репозитория и выберите 'Обновить индекс' в контекстном меню для обновления репозитория.</li> |
| </ol> |
| |
| <img alt="Снимок репозиториев Maven в окне 'Службы'" class="margin-around b-all" src="../../../images_www/articles/72/java/maven-create-se/maven-repositories.png" title="Репозитории Maven в окне 'Службы'"> |
| |
| <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>Выберите пункт меню "Окно > Прочее > Браузер репозиториев Maven" для просмотра репозиториев 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>Измените указанные по умолчанию значения для "Group Id" и "Version" (необязательно). |
| <p>Значения "Group Id" и "Version" используются в качестве координат артефакта в локальном репозитории при создании проекта.</p></li> |
| <li>Нажмите кнопку "Завершить".</li> |
| |
| </ol> |
| |
| |
| |
| <p>После нажатия кнопки "Готово" проект Maven будет создан в среде IDE и открыт в окне "Проекты". Среда 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>Щелкните правой кнопкой узел проекта и выберите команду "Свойства".</li> |
| <li>Выберите в окне "Свойства" категорию "Источники".</li> |
| <li>Убедитесь, что для выбранного в раскрывающемся списке формата 'Исходный/Двоичный' задано значение 1,5 или выше.</li> |
| <li>Для свойства "Кодировка" выберите из раскрывающегося списка значение "UTF-8". Нажмите кнопку "ОК". </li> |
| </ol> |
| </div> |
| |
| <a name="04"></a> |
| <h2>Добавление файлов Hibernate и зависимостей</h2> |
| <p>Для добавления поддержки Hibernate необходимо сделать библиотеки Hibernate доступными, объявив необходимые артефакты в качестве зависимостей в POM. В среде IDE содержатся мастеры, упрощающие создание файлов библиотеки Hibernate, которые потребуются в проекте. Мастеры, включенные в среду IDE, могут использоваться для создания файла настройки библиотеки Hibernate и вспомогательного служебного класса. При создании файла настройки Hibernate с помощью мастера среда IDE автоматически обновляет POM для добавления зависимостей Hibernate в проект.</p> |
| |
| <p>Зависимости к проекту можно добавить в окне "Проекты" или путем изменения файла <tt>pom.xml</tt>. Чтобы добавить зависимости в окне 'Проекты', щелкните правой кнопкой мыши узел 'Зависимости' в окне 'Проекты' и выберите 'Добавить зависимость' во вплывающем меню, чтобы открыть диалоговое окно 'Добавить зависимость'. При добавлении зависимостей среда IDE обновляет POM и загружает в локальный репозиторий все требуемые артефакты, отсутствующие в нем.</p> |
| |
| <p>Для непосредственного изменения <tt>pom.xml</tt> откройте файл, раскрыв узел "Файлы проекта" в окне "Проекта" и дважды щелкнув <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 в окне "Службы" и выберите команду "Подключить".</li> |
| <li>Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Other" для открытия мастера "New File".</li> |
| <li>Выберите элемент "Hibernate Configuration Wizard" из категории "Hibernate". Нажмите кнопку "Далее".</li> |
| <li>Сохраните имя файла по умолчанию (<tt>hibernate.cfg</tt>).</li> |
| <li>Нажмите кнопку "Обзор" и укажите для местоположения файла путь к каталогу <tt>src/main/resources</tt> (если он еще не указан). Нажмите кнопку "Далее".</li> |
| <li>Выберите подключение "sakila" из раскрывающегося списка "Database Connection". Нажмите кнопку "Завершить".</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>При нажатии кнопки "Готово" среда IDE открывает файл <tt>hibernate.cfg.xml</tt> в редакторе. Файл настройки содержит информацию об отдельной базе данных. |
| </p> |
| |
| <p>Если развернуть узел "Зависимости" в окне проекта, можно убедиться, что среда IDE добавила необходимые артефакты Hibernate. Под узлом "Зависимости" среда IDE выводит все прямые и промежуточные зависимости, необходимые для компиляции проекта. Артефакты, являющиеся прямыми зависимостями (зависимостями, определенными в файле POM проекта), отмечены цветными значками JAR. Значок артефакта имеет серый цвет, если артефакт является промежуточной зависимостью (артефакт, являющийся зависимостью одной или нескольких прямых зависимостей). </p> |
| <img alt="Снимок зависимостей под узлом 'Библиотеки' в окне 'Проекты'" class="margin-around b-all" src="../../../images_www/articles/80/java/maven-create-se/maven-project-libs.png" title="Зависимости под узлом 'Библиотеки' в окне 'Проекты'"> |
| |
| <p>Для просмотра ведений об артефактах щелкните правой кнопкой мыши JAR и выберите 'Просмотреть сведения об артефактах'. Окно "Artifact Viewer" содержит вкладки, показывающие информацию о выделенных артефактах. Например, на вкладке "Общие" представлены подробные сведения о координатах артефакта и его доступных версиях. На вкладке "График" показано визуальное представление зависимостей выделенного артефакта.</p> |
| <img alt="снимок вкладки 'Графики' или средства просмотра артефактов, в которых отображаются расхождения" class="margin-around b-all" src="../../../images_www/articles/72/java/maven-create-se/maven-artifacts-viewer.png" title="Вкладка 'Графики' или средство просмотра артефактов, в которых отображаются расхождения"> |
| <p class="tips">Также можно использовать вкладку "График" для обнаружения и устранения конфликта версий между зависимостями.</p> |
| |
| |
| |
| <a name="04b"></a> |
| <h3>Изменение файла настройки библиотеки Hibernate</h3> |
| <p>В этом упражнении будут изменены свойства по умолчанию, указанные в <tt>hibernate.cfg.xml</tt>, для включения функции протоколирования отладки для операторов SQL. Данное упражнение не является обязательным.</p> |
| <ol> |
| <li>Откройте <tt>hibernate.cfg.xml</tt> на вкладке "Проект". Для открытия файла можно развернуть узел "Configuration Files" в окне "Projects" и дважды щелкнуть <tt>hibernate.cfg.xml</tt>.</li> |
| <li>Разверните узел "Configuration Properties" в области "Optional Properties".</li> |
| <li>Нажмите кнопку "Add" для открытия диалогового окна "Add Hibernate Property".</li> |
| <li>В диалоговом окне выберите свойство <tt>hibernate.show_sql</tt> и установите значение <tt>true</tt>. Нажмите кнопку "ОК". Это приведет ко включению протоколирования отладки операторов SQL.<br /> <img alt="Диалоговое окно 'Добавить свойство Hibernate' для свойства hibernate.show_sql" class="margin-around b-all" height="161" src="../../../images_www/articles/72/java/hibernate-j2se/add-property-showsql.png" title="Диалоговое окно 'Добавить свойство Hibernate', в котором отображаются значения настроек для свойства hibernate.show_sql" width="392"></li> |
| <li>Щелкните "Добавить" в узле "Различные свойства" и выберите <tt>hibernate.query.factory_class</tt> в раскрывающемся списке "Имя свойства".</li> |
| <li>Введите <strong>org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory</strong> в текстовое поле. Нажмите кнопку "ОК". |
| <p class="notes"><strong>Примечание.</strong> Не выбирайте значение из раскрывающегося списка.</p> |
| <img alt="Диалоговое окно 'Добавить свойство Hibernate' для свойств hibernate.query.factory_class" class="margin-around b-all" src="../../../images_www/articles/80/web/hibernate-webapp/add-property-factoryclass-4.png" title="Диалоговое окно 'Добавить свойство Hibernate', в котором отображаются значения настроек для свойства hibernate.query.factory_class property"> |
| <p>При выборе вкладки "XML" в редакторе можно просмотреть файл в режиме XML. Файл должен выглядеть примерно так:</p> |
| <pre class="examplecode"><hibernate-configuration> |
| <session-factory name="session1"> |
| <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> |
| <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> |
| <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sakila</property> |
| <property name="hibernate.connection.username">root</property> |
| <property name="hibernate.connection.password">######</property> |
| <property name="hibernate.show_sql">true</property> |
| <property name="hibernate.query.factory_class">org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory</property> |
| </session-factory> |
| </hibernate-configuration></pre> |
| </li> |
| <li>Сохраните измененный файл.</li> |
| </ol> |
| <p>После запуска приложения появится возможность просмотра запроса SQL, представленного в окне "Output" среды IDE.</p> |
| |
| <a name="04c"></a> |
| <h3>Создание вспомогательного файла <tt>HibernateUtil.java</tt></h3> |
| <p>Для использования библиотеки Hibernate необходимо создать вспомогательный класс для обработки запуска и обращения к <tt>SessionFactory</tt> библиотеки Hibernate для получения объекта "Session". Класс обеспечивает вызов метода <tt>configure()</tt> библиотеки Hibernate, загрузку файла настройки <tt>hibernate.cfg.xml</tt> и последующую сборку <tt>SessionFactory</tt> для получения объекта "Session". |
| </p> |
| |
| <p>В этом разделе для создания вспомогательного класса <tt>HibernateUtil.java</tt> используется мастер создания файла.</p> |
| <ol> |
| <li>Щелкните правой кнопкой мыши узел "Source Packages" и выберите "New > Other" для открытия мастера "New File".</li> |
| <li>Выберите "Hibernate" из списка "Categories" и "HibernateUtil.java" из списка "File Types". Нажмите кнопку "Далее".</li> |
| <li>Введите <strong>HibernateUtil</strong> в качестве имени класса и <strong>sakila.util</strong> в качестве имени пакета. Нажмите кнопку "Завершить".</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>После нажатия кнопки "Finish" в редакторе откроется класс <tt>HibernateUtil.java</tt>. Файл можно закрыть, т.к. необходимость в его изменении отсутствует.</p> |
| |
| |
| </div> |
| |
| |
| |
| <a name="05"></a> |
| <h2>Создание файлов сопоставления библиотеки Hibernate и классов Java</h2> |
| |
| <p>В этом руководстве для отображения данных в таблице "ACTOR" базы данных используется простой старый объект Java (POJO) <tt>Actor.java</tt>. Класс указывает поля для столбцов в таблицах и использует простые методы установки и получения значений для извлечения и записи данных. Для сопоставления <tt>Actor.java</tt> с таблицей "ACTOR" можно использовать файл сопоставления библиотеки Hibernate или аннотации в классе.</p> |
| |
| <p>Мастер обратного проектирования, файлы отображения библиотеки Hibernate и объекты POJO могут использоваться в мастере "Database" для создания нескольких объектов POJO и файлов отображения на основе выбранных таблиц базы данных. Кроме того, в среде IDE можно использовать мастеры для упрощения создания отдельных объектов POJO и файлов сопоставления "с нуля". |
| </p> |
| |
| <p class="notes"><strong>Примечание.</strong> При создании нескольких таблиц целесообразно использовать мастер. Однако в этом учебном курсе будет создан только один объект POJO и один файл отображения, поэтому можно создать эти файлы по отдельности. Действия по <a href="#10">созданию объектов POJO и файлов сопоставления по отдельности</a> приведены в конце данного учебного курса.</p> |
| |
| <div class="indent"> |
| <a name="05a"></a> |
| <h3>Создание файла обратного проектирования</h3> |
| <p>Для использования объектов POJO и файлов сопоставления в мастере "База данных" необходимо сначала создать файл обратного проектирования <tt>reveng.xml</tt> в папке <tt>src/main/resources</tt>, в которой был создан файл <tt>hibernate.cfg.xml</tt>. |
| </p> |
| |
| <ol> |
| <li>Щелкните правой кнопкой мыши узел "Source Packages" и выберите "New > Other" для открытия мастера "New File".</li> |
| <li>В списке "Categories" выберите "Hibernate", а в списке "File Types" выберите "Hibernate Reverse Engineering Wizard". Нажмите кнопку "Далее".</li> |
| <li>Введите имя файла <strong>hibernate.reveng</strong>.</li> |
| <li>Определите <strong><tt>src/main/resources</tt></strong> в качестве местоположения. Нажмите кнопку "Далее".</li> |
| <li>Выберите элемент <strong>actor</strong> на панели "Available Tables" и нажмите кнопку "Add". Нажмите кнопку "Завершить".</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>Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Other" для открытия мастера "New File".</li> |
| <li>Выберите "Hibernate Mapping Files and POJOs from a Database" в категории "Hibernate". Нажмите кнопку "Далее".</li> |
| <li>Выберите файл <tt>hibernate.cfg.xml</tt> из раскрывающегося списка "Hibernate Configuration File", если он еще не выбран.</li> |
| <li>Выберите файл <tt>hibernate.cfg.xml</tt> из раскрывающегося списка "Hibernate Reverse Engineering File", если он еще не выбран.</li> |
| <li>Убедитесь в том, что выбраны пункты <strong>Domain Code</strong> и <strong>Hibernate XML Mappings</strong>.</li> |
| <li>Введите <strong>sakila.entity</strong> в качестве имени пакета в поле "Package". Нажмите кнопку "Завершить".</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> |
| После нажатия кнопки "Готово" в среде 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>Щелкните правой кнопкой мыши узел проекта в окне "Projects" и выберите "New > Other" для открытия мастера создания файла.</li> |
| <li>Выберите шаблон "JFrame Form" из категории "Swing GUI Forms". Нажмите кнопку "Далее".</li> |
| <li>Введите <strong>DVDStoreAdmin</strong> в поле "Class Name" и <strong>sakila.ui</strong> в поле "Package". Нажмите кнопку "Завершить".</li> |
| </ol> |
| <p>После нажатия кнопки "Готово" в среде IDE создается класс, а в представлении "Дизайн" редактора открывается форма JFrame.</p> |
| |
| <a name="06b"></a> |
| <h3>Добавление элементов к форме</h3> |
| <p>Теперь необходимо добавить элементы пользовательского интерфейса к форме. При открытии формы в представлении "Проект" в правой части рабочей области среды IDE появляется элемент "Палитра". Для добавления элемента к форме перетащите элемент с палитры в область формы. После добавления элемента к форме необходимо изменить значение по умолчанию свойства "Variable Name" для этого элемента.</p> |
| |
| <ol> |
| <li>Перетащите элемент "Label" из палитры и измените текст на <strong>Actor Profile</strong>. </li> |
| <li>Перетащите элемент "Label" с палитры и измените текст на <strong>First Name</strong>.</li> |
| <li>Перетащите элемент "Text Field", поместите его рядом с меткой "First Name" и удалите текст по умолчанию. |
| <p>При удалении текста по умолчанию текстовое поле сворачивается. Позже можно будет изменить размер текстового поля для настройки выравнивания элементов формы.</p></li> |
| <li>Перетащите элемент "Label" с палитры и измените текст на <strong>Last Name</strong>.</li> |
| <li>Перетащите элемент "Text Field", поместите его рядом с меткой "Last Name" и удалите текст по умолчанию.</li> |
| <li>Перетащите элемент "Button" с палитры и измените текст на <strong>Query</strong>.</li> |
| <li>Перетащите элемент "Table" с палитры в форму.</li> |
| <li>Измените значения "Variable Name" следующих элементов пользовательского интерфейса в соответствии со значениями, приведенными в следующей таблице. |
| <p>Вы можете изменить значение 'Имя переменной' для элемента, щелкнув правой кнопкой мыши элемент в представлении конструктора и выбрав 'Изменить имя переменной'. Кроме того, значение "Variable Name" можно изменить непосредственно в окне "Inspector".</p> |
| <p class="notes">Присвоение значений "Variable Name" элементам "Label" не требуется.</p> |
| |
| <table> |
| <tr> |
| <th class="tblheader" scope="col">Элемент</th><th class="tblheader" scope="col">Имя переменной</th> |
| </tr> |
| <tr> |
| <td class="tbltd1">Текстовое поле "First Name"</td><td class="tbltd1"><tt>firstNameTextField</tt></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">Текстовое поле "Last Name"</td><td class="tbltd1"><tt>lastNameTextField</tt></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">Кнопка "Query"</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>Можно активировать свойство "Переменная ширина" для текстовых полей, чтобы обеспечить изменение размера текстовых полей вместе с окном и идентичность расстояний между элементами.</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. После создания запросов к форме будут добавлены методы, обеспечивающие вызов соответствующего запроса при нажатии кнопки "Query".</p> |
| </div> |
| |
| <a name="07"></a> |
| <h2>Создание запроса в редакторе запросов HQL Query Editor</h2> |
| <p>В среде IDE создание и тестирование запросов на основе языка Hibernate Query Language (HQL) может осуществляться с использованием редактора запросов HQL Query Editor. После ввода запроса в редакторе отображается эквивалентный (переведенный) запрос SQL. При нажатии кнопки "Run HQL Query" на панели инструментов в среде IDE запрос выполняется, а результаты отображаются в нижней области редактора. |
| </p> |
| <p>В этом упражнении редактор HQL Editor применяется для создания простых запросов HQL, позволяющих извлекать список подробных данных актеров на основе соответствия имени или фамилии. Перед добавлением запроса к классу редактор HQL Query Editor должен использоваться для проверки правильной работы подключения и корректности результатов запроса. Перед выполнением запроса необходимо скомпилировать приложение.</p> |
| |
| <ol> |
| <li>Правой кнопкой мыши щелкните узел проекта и выберите команду "Построить". |
| <p>При нажатии кнопки "Сборка" IDE загрузит необходимые артефакты в локальный репозиторий Maven.</p></li> |
| <li>Раскройте узел исходного пакета <tt><default package></tt> в узле "Другие исходные файлы" окна "Проекты".</li> |
| <li>Щелкните правой кнопкой мыши файл <tt>hibernate.cfg.xml</tt> и выберите "Run HQL Query" для открытия редактора HQL Editor.</li> |
| <li>Протестируйте подключение путем ввода <tt>from Actor</tt> в редакторе запросов HQL Query Editor. Нажмите кнопку 'Выполнить запрос HQL' ( <img alt="Кнопка 'Выполнить запрос HQL'" height="16" src="../../../images_www/articles/72/java/hibernate-j2se/run_hql_query_16.png" title="Кнопка 'Выполнить запрос HQL'" width="16" /> ) на панели инструментов. |
| <p>При нажатии кнопки "Run HQL Query" результаты запроса должны отображаться в нижней области редактора запросов 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 и нажмите кнопку "Выполнить запрос HQL" для проверки результатов запроса при вводе значения "PE" в строку поиска. |
| <pre class="examplecode">from Actor a where a.firstName like 'PE%'</pre> |
| <p>Запрос возвращает список подробных данных тех актеров, чьи имена начинаются с символов "PE".</p> |
| <p>При нажатии кнопки "SQL", размещенной над результатами, на экране должен отобразиться соответствующий эквивалентный запрос 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 и введите следующий запрос на панели редактирования. Нажмите кнопку "Run HQL Query". |
| <pre class="examplecode">from Actor a where a.lastName like 'MO%'</pre> |
| <p>Запрос возвращает список подробных данных актеров, чьи фамилии начинаются с символов "МО". |
| </p> |
| </li> |
| </ol> |
| <p>Тестирование запросов показывает, что запросы возвращают требуемые результаты. Теперь необходимо внедрить запросы в приложение и обеспечить вызов соответствующего запроса путем нажатия кнопки "Query" в форме.</p> |
| |
| <a name="08"></a> |
| <h2>Добавление запроса к форме</h2> |
| <p>Теперь необходимо изменить <tt>DVDStoreAdmin.java</tt> для добавления строк запроса и создания методов, позволяющих формировать и вызывать запрос, включающий входные переменные. Также требуется изменить обработчик событий нажатия кнопок для вызова соответствующего запроса и добавить метод, обеспечивающий отображение результатов запроса в таблице.</p> |
| |
| <ol> |
| <li>Откройте <tt>DVDStoreAdmin.java</tt> и выберите вкладку "Source".</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 "Session".</p> |
| </li> |
| <li>Исправьте параметры импорта для добавления операторов импорта в библиотеки Hibernate (<tt>org.hibernate.Query</tt>, <tt>org.hibernate.Session</tt>) и <tt>java.util.List</tt>.</li> |
| <li>Создайте обработчик событий для кнопки "Query", переключившись в режим проектирования и дважды нажав кнопку "Query". |
| <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>Добавьте следующий метод для просмотра результатов в "JTable". |
| <pre class="examplecode">private void displayResult(List resultList) { |
| Vector<String> tableHeaders = new Vector<String>(); |
| 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<Object> oneRow = new Vector<Object>(); |
| 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>Щелкните правой кнопкой мыши узел проекта в окне "Проекты" и выберите команду "Свойства".</li> |
| <li>Выберите категорию 'Выполнить' в диалоговом окне 'Свойства проекта'.</li> |
| <li>Введите <strong>sakila.ui.DVDStoreAdmin</strong> в поле "Main Class". Нажмите кнопку "ОК". |
| <p>В качестве альтернативы можно нажать кнопку "Browse" и выбрать главный класс в диалоговом окне.</p> |
| <img alt="Установка главного класса в диалоговом окне 'Обзор главных классов'" class="margin-around b-all" height="201" src="../../../images_www/articles/72/java/hibernate-j2se/browse-main-class.png" title="Установка главного класса в диалоговом окне 'Обзор главных классов'" width="339"> |
| </li> |
| <li>Нажмите кнопку "Run Project" на главной панели инструментов для запуска приложения.</li> |
| </ol> |
| |
| <p>При вызове в среде IDE в проекте Maven операции Run параметры Maven выполняются в среде IDE совместно с операцией Run. Среда IDE имеет цели по умолчанию, связанные с операциями IDE, соответствующими упаковке проекта. Связанные с операцией Run цели можно просмотреть на панели "Действия" окна "Свойства" проекта.</p> |
| |
| |
| <img alt="Панель 'Действия' окна свойств проекта DVDStoreAdmin" class="margin-around b-all" src="../../../images_www/articles/72/java/hibernate-j2se/maven-projectproperties.png" title="Панель 'Действия' окна свойств проекта DVDStoreAdmin" width="600"> |
| |
| |
| <p class="tips">Можно настроить привязку целей к операциям в панели "Действия" окна проекта "Свойства".</p> |
| |
| <p>Форма графического интерфейса открывается при запуске приложения. Введите информацию в строке поиска для текстовых полей "First Name" или "Last Name" и нажмите кнопку "Query" для поиска актера и просмотра подробных данных. </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>При вызове окна "Output" в среде 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>Выберите в главном меню "Группа > Subversion > Проверить".</li> |
| <li>В диалоговом окне "Проверка" введите следующий URL-адрес репозитория:<br /> <tt>https://svn.netbeans.org/svn/samples~samples-source-code</tt><br /> Нажмите кнопку "Далее".</li> |
| <li>Нажмите кнопку "Обзор" для открытия диалогового окна "Обзор папок репозитория".</li> |
| <li>Разверните корневой узел и выберите <strong>samples/java/DVDStoreAdmin-Maven</strong>. Нажмите кнопку "ОК".</li> |
| <li>Укажите локальную папку для исходных файлов (папка должна быть пустой).</li> |
| <li>Нажмите кнопку "Завершить". |
| <p>После нажатия кнопки "Готово" среда IDE инициализирует локальную папку в качестве репозитория Subversion и выполняет проверку исходных файлов проекта на выходе.</p> |
| </li> |
| <li>Щелкните команду "Открыть проект" в диалоговом окне, которое появится после завершения проверки.</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>. При создании файла сопоставления "с нуля" необходимо сопоставить поля и столбцы в редакторе XML.</p> |
| |
| <p class="notes"><strong>Примечание.</strong> Это упражнение является необязательным и описывает создание POJO и файла сопоставления, созданных с помощью файлов сопоставления библиотеки Hibernate и POJO из мастера баз данных.</p> |
| <ol> |
| <li>Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Java Class" для открытия мастера создания класса Java.</li> |
| <li>В мастере введите <b>Actor</b> в качестве имени класса и <b>sakila.entity</b> в качестве имени пакета. Нажмите кнопку "Завершить".</li> |
| <li>Внесите в класс следующие изменения (выделены полужирным шрифтом) для реализации интерфейса "Serializable" и добавьте поля для столбцов таблицы. |
| <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>В диалоговом окне "Generate Getters and Setters" выберите все поля и нажмите кнопку "Generate".<br /> <img alt="Диалоговое окно 'Создание методов получения и установки'" class="margin-around b-all" height="246" src="../../../images_www/articles/72/java/hibernate-j2se/getters-setters.png" title="Диалоговое окно 'Создание методов получения и установки'" width="359"> |
| |
| <p class="tips">В диалоговом окне "Generate Getters and Setters" можно использовать стрелку вверх на клавиатуре для перемещения выбранного элемента к узлу "Actor", а затем нажать клавишу "пробел" и выбрать все поля "Actor".</p></li> |
| <li>Исправьте операторы импорта и сохраните измененные данные.</li> |
| </ol> |
| |
| <p>После создания объекта POJO для таблицы необходимо создать файл сопоставления библиотеки Hibernate для класса <tt>Actor.java</tt>.</p> |
| <ol> |
| <li>Щелкните правой кнопкой мыши узел исходных файлов <tt>sakila.entity</tt> в окне "Projects" и выберите "New > Other" для открытия мастера создания файла "New File".</li> |
| <li>Выберите "Файл сопоставления Hibernate" в категории "Hibernate". Нажмите кнопку "Далее".</li> |
| <li>Введите <strong>Actor.hbm</strong> в поле "Имя файла" и укажите в качестве папки <b>src/sakila/entity</b>. Нажмите кнопку "Далее".</li> |
| <li>Введите <b>sakila.entity.Actor</b> в поле "Класс для размещения".</li> |
| <li>Выберите <b>actor</b> из раскрывающегося списка "Таблица базы данных", если это значение не было выбрано ранее. Нажмите кнопку "Завершить".<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>. В целях просмотра подробных данных разверните узел "Mapping" в режиме проектирования <tt>hibernate.cfg.xml</tt> или в режиме XML. Запись <tt>mapping</tt> в обзоре XML будет выглядеть следующим образом: |
| </p> |
| <pre class="examplecode"> |
| <mapping resource="sakila/entity/Actor.hbm.xml"/> |
| </session-factory> |
| </hibernate-configuration></pre> |
| </li> |
| <li>Сопоставьте поля в <tt>Actor.java</tt> со столбцами в таблице "ACTOR" путем внесения следующих изменений (выделены полужирным шрифтом) в <tt>Actor.hbm.xml</tt>. |
| |
| <pre class="examplecode"><hibernate-mapping> |
| <class name="sakila.entity.Actor" <strong>table="actor"> |
| <id name="actorId" type="java.lang.Short"> |
| <column name="actor_id"/> |
| <generator class="identity"/> |
| </id> |
| <property name="firstName" type="string"> |
| <column length="45" name="first_name" not-null="true"/> |
| </property> |
| <property name="lastName" type="string"> |
| <column length="45" name="last_name" not-null="true"/> |
| </property> |
| <property name="lastUpdate" type="timestamp"> |
| <column length="19" name="last_update" not-null="true"/> |
| </property> |
| </class></strong> |
| </hibernate-mapping></pre> |
| |
| <p class="tips">Для заполнения значений при изменении файла сопоставления можно использовать функцию автозавершения кода.</p> |
| <p class="notes"><b>Примечание.</b> По умолчанию у созданного элемента <tt>class</tt> имеется закрывающий тег. Поскольку элементы свойства необходимо добавить между открывающим и закрывающим тегами элемента <tt>class</tt>, следует внести следующие изменения (выделены полужирным шрифтом). После внесения изменений можно использовать функцию автозавершения кода между тегами <tt>class</tt>.</p> |
| <pre class="examplecode"><hibernate-mapping> |
| <class name="sakila.entity.Actor" <strong>table="actor"> |
| </class></strong> |
| </hibernate-mapping></pre> |
| |
| </li> |
| <li>Нажмите кнопку "Validate XML" на панели инструментов и сохраните изменения.</li> |
| </ol> |
| |
| <p>Создание объектов POJO и файлов сопоставления библиотеки Hibernate может эффективно использоваться для дальнейшей настройки приложения.</p> |
| |
| |
| <div class="feedback-box"><a href="/about/contact_form.html?to=3&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> |