corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Создание приложения Maven Swing с использованием Hibernate - учебный курс по среде IDE NetBeans

В данном учебном курсе описано использование среды IDE NetBeans для создания приложения Java на базе Swing из архетипа Maven. Приложение использует библиотеку Hibernate в качестве слоя сохранения состояния для извлечения POJO (простых объектов Java) из реляционной базы данных. В данном учебном курсе описано, как мастеры в среде IDE могут помочь в создании необходимых полей и добавить зависимости Hibernate в POM. После создания объектов Java и настройки приложения на использование Hibernate необходимо создать графический интерфейс пользователя для поиска и отображения данных.

Поддержка Maven полностью интегрирована в процесс запуска среды IDE NetBeans 6.7. Приложения можно создавать в мастере новых проектов из встроенных прототипов проекта Maven или из прототипов, находящихся в удаленных репозиториях. Maven Repository Browser позволяет выполнять обзор локальных и удаленных репозиториев Maven, изучать артефакты и добавлять зависимости проекта к POM проекта.

Подробные сведения о создании приложения с использованием Ant приведены в разделе Использование библиотеки Hibernate в приложении Java на базе Swing.

Подробные сведения о создании приложения Maven Java EE приведены в разделе Создание приложения уровня предприятия с использованием Maven.

Содержание

Содержимое этой страницы относится к среде IDE NetBeans 6.7, 6.8, 6.9 и 7.0

Для работы с этим руководством требуется программное обеспечение и ресурсы, перечисленные ниже.

Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans 6.7, 6.8, 6.9 или 7.0
Комплект для разработчика на языке Java (JDK) версия 6 или версия 5
Maven версия 2.09 или выше
Сервер базы данных MySQL версия 5.x
База данных Sakila подключаемый модуль, который можно получить в центре обновления

Примечание. Для NetBeans IDE 6.9 необходим пакет программ для разработки приложений на языке (JDK) 6.

Перед изучением этого курса можно ознакомиться со следующей документацией:

Вы можете загрузить архив в формате zip с завершенным проектом.

Создание базы данных

В этом учебном курсе используется база данных MySQL с названием sakila. Пример базы данных не входит в устанавливаемую в среду IDE, поэтому перед изучением этого учебного курса необходимо создать базу данных.

База данных Sakila представляет собой свободно распространяемый пример базы данных, который можно загрузить с сайта MySQL. Для создания базы данных Sakila можно загрузить и установить подключаемый модуль Sakila Sample Database с использованием диспетчера подключаемых модулей. После установки подключаемого модуля можно создать базу данных Sakila в окне "Службы". База данных Sakila будет добавлена к списку баз данных в диалоговом окне "Создание базы данных MySQL".

Дополнительная информация о настройке среды IDE для работы с MySQL приведены в учебном курсе Подключение к базе данных MySQL.

  1. Откройте диспетчер подключаемых модулей и установите подключаемый модуль Sakila Sample Database.
  2. После установки подключаемого модуля запустите сервер базы данных MySQL: разверните узел "Базы данных" в окне "Службы", щелкните правой кнопкой мыши узел "Сервер MySQL" и выберите команду "Запустить".
  3. Щелкните правой кнопкой мыши узел "Сервер MySQL" и выберите команду "Создать базу данных".
  4. Выберите базу данных Sakilaиз раскрывающегося списка "Имя новой базы данных" в диалоговом окне "Создать базу данных MySQL". Нажмите кнопку "ОК".
    Пример экрана: диалоговое окно "Создать базу данных MySQL"

    При нажатии кнопки "ОК" узел "Sakila" появится под узлом "Сервер MySQL".

  5. Щелкните правой кнопкой мыши узел "Sakila" и выберите "Подключиться".

При нажатии кнопки "Подключиться" узел подключения к базе данных "Sakila" (jdbc:mysql://localhost:3306/sakila [по умолчанию: username]) появится под узлом "Базы данных". При открытом подключении для просмотра данных в базе данных разверните этот узел подключения.

Настройка Maven

Если это ваш первый проект Maven, проверьте параметры настройки Maven в окне "Параметры". Для работы с этим учебным курсом необходимо установить Maven на локальный компьютер. Программу установки можно загрузить с сайта Maven.

  1. Выберите категорию "Дополнительно" в окне "Параметры" и перейдите на вкладку "Maven".
  2. Укажите папку установки "Maven" (требуется версия 2.0.9 или выше).
  3. Проверьте корректность адреса к локальному репозиторию Maven.
  4. Нажмите кнопку "ОК".

Среда IDE использует локальный клиент Subversion для получения артефактов Maven из удаленных репозиториев. Вы можете проверить корректность установки и настройки клиента Subversion, введя в командной строке команду svn --version.

Подробные сведения по настройке Subversion приведены в Обзоре Subversion.

Просмотр репозиториев Maven

Артефакты, используемые Maven для создания всех проектов, сохраняются в локальном репозитории Maven. Если артефакт объявлен как зависимость проекта, он загружается в локальный репозиторий из одного из зарегистрированных удаленных репозиториев.

Некоторые известные индексированные репозитории Maven зарегистрированы и включены в обозреватель репозиториев по умолчанию. Зарегистрированные репозитории содержат большинство общедоступных артефактов, требуемых для создания проекта. Скорее всего, у вас не возникнет необходимости в регистрации дополнительных репозиториев, если ваш проект не содержит артефактов, имеющихся только в ваших личных репозиториях.

Maven Repository Browser можно использовать для просмотра содержимого ваших локальных и удаленных репозиториев. Любой артефакт, имеющийся в вашем локальном или удаленном репозитории можно добавить в качестве зависимости проекта. Для просмотра локальных артефактов разверните узел "Локальный репозиторий". Артефакты, приведенные в узле удаленного репозитория, могут быть добавлены в качестве зависимостей проекта, однако не все из них представлены локально. Они добавляются к локальному репозиторию только в том случае, если объявляются в качестве зависимостей проекта.

Чтобы открыть обозреватель репозиториев Maven:

  • выберите из главного меню "Окно" > "Другие" > "Обозреватель репозитория Maven".
Снимок экрана: обозреватель репозитория Maven

Когда курсор находится над артефактом, среда IDE отображает всплывающую подсказку с координатами артефакта. Посмотреть дополнительные сведения об артефакте можно с помощью двойного щелчка по файлу JAR артефакта в обозревателе.

Чтобы выполнить поиск артефакта, нажмите кнопку "Найти" на панели инструментов обозревателя репозитория Maven или используйте текстовое поле "Быстрый поиск" в главной панели инструментов.

Подробные сведения об управлении зависимостями путей классов Maven и работе с репозиториями Maven в среде IDE приведены в разделе Управление зависимостями курса Практические рекомендации по Apache Maven в NetBeans 6.x.

Для просмотра видеоролика по использованию Artifact Viewer обратитесь к демонстрации Работа с зависимостями Maven.

Создание приложения Maven

В это учебном курсе мы создадим простой проект приложения Java Swing под названием DVDStoreAdmin. Проект будет создан на основе одного из включенных в набор архетипов Maven, после чего настройки проекта, определенные по умолчанию, будут изменены.

Выбор архетипа

Мастер создания нового проекта позволяет создать проект Maven из архетипа Maven. Среда IDE включает в себя несколько архетипов для общих типов проекта NetBeans, кроме того, в мастере можно выбрать архетипы из удаленных репозиториев. В данном примере в качестве шаблона проекта используется архетип Maven Quickstart.

  1. Выберите команду "Файл" > "Новый проект" (CTRL+SHIFT+N).
  2. Выберите проект "Maven" из категории "Maven". Нажмите кнопку "Далее".
  3. Выберите "Архетип Maven Quickstart". Нажмите кнопку "Далее".
  4. Введите DVDStoreAdmin в качестве имени проекта и укажите местоположение проекта.
  5. Измените указанные по умолчанию значения для "Group Id" и "Version" (необязательно).

    Значения "Group Id" и "Version" используются в качестве координатов артефакта в локальном репозитории при создании проекта.

  6. Нажмите кнопку "Готово".
Пример экрана: архетипы Maven в мастере создания новых проектов

После нажатия кнопки "Готово" проект Maven будет создан в среде IDE и открыт в окне "Проекты". Среда IDE автоматически создает класс App.java в пакете dvdstoreadmin. Вы можете удалить этот класс (App.java), поскольку он не требуется приложению для работы.

Примечание. Если проект Maven создается впервые, программа начнет загрузку необходимых подключаемых модулей и артефактов в локальный репозиторий. Это может занять некоторое время.

Изменение свойств проекта

При создании проекта Maven с помощью мастера свойства этого проекта основываются на архетипе. В некоторых случаях может возникнуть необходимость изменения свойств, установленных по умолчанию, в соответствии с требованиями системы и проекта. Так, для данного проекта можно проверить, установлено ли значение уровня "Source" равным 1,5, поскольку проект использует аннотации.

  1. Щелкните правой кнопкой узел проекта и выберите команду "Свойства".
  2. Выберите в окне "Свойства" категорию "Источники".
  3. Установите в раскрывающемся списке для свойства "Формат исходного/двоичного кода" значение 1,5.
  4. Для свойства "Кодировка" выберите из раскрывающегося списка значение "UTF-8". Нажмите кнопку "ОК".

Добавление файлов Hibernate и зависимостей

Для добавления поддержки Hibernate необходимо сделать библиотеки Hibernate доступными, объявив необходимые артефакты в качестве зависимостей в POM. В среде IDE есть мастеры, упрощающие создание файлов библиотеки Hibernate, которые потребуются в проекте. Мастеры, включенные в среду IDE, могут использоваться для создания файла настройки библиотеки Hibernate и вспомогательного служебного класса. При создании файла настройки Hibernate с помощью мастера среда IDE автоматически обновляет POM для добавления зависимостей Hibernate в проект.

Зависимости к проекту можно добавить в окне "Проекты" или путем изменения файла pom.xml. Для добавления зависимостей с помощью окна щелкните узел "Библиотеки" в окне "Проекты" правой кнопкой мыши и выберите в появившемся меню команду "Добавить зависимость". При добавлении зависимостей среда IDE обновляет POM и загружает в локальный репозиторий все требуемые артефакты, отсутствующие в нем.

Для непосредственного изменения pom.xml откройте файл, раскрыв узел "Файлы проекта" в окне "Проекта" и дважды щелкнув pom.xml.

Создание файла настройки библиотеки Hibernate

Файл настройки библиотеки Hibernate (hibernate.cfg.xml) содержит информацию о подключении к базе данных, сопоставлениях ресурсов и других свойствах подключения. При создании файла настройки Hibernate с использованием мастера подключение к базе данных определяется путем выбора из списка подключений, зарегистрированных в среде IDE. В ходе создания файла настройки подробные сведения о подключении и диалекте добавляются к базе данных автоматически, в соответствии с выбранным подключением. Среда IDE автоматически изменяет POM, добавляя требуемые зависимости Hibernate. После создания файла настройки его можно изменить, использовав редактор с несколькими представлениями, или внести изменения в код XML непосредственно в редакторе XML.

  1. Щелкните правой кнопкой соединение с базой данных Sakila в окне "Службы" и выберите команду "Подключить".
  2. Щелкните правой кнопкой узел "Исходные файлы" в окне "Проекты" и выберите команду "Создать" > "Другие" для открытия мастера "Новый файл".
  3. Выберите элемент "Мастер настройки Hibernate" из категории "Hibernate". Нажмите кнопку "Далее".
  4. Сохраните имя файла по умолчанию (hibernate.cfg).
  5. Нажмите кнопку "Обзор" и установите в качестве местоположения папку src/main/resources. Нажмите кнопку "Далее".
  6. Выберите подключение sakila из раскрывающегося списка "Подключение к базе данных". Нажмите кнопку "Готово".
Пример экрана: создание подключения к базе данных

При нажатии кнопки "Готово" среда IDE открывает файл hibernate.cfg.xml в редакторе. Файл настройки содержит информацию об отдельной базе данных.

При развертывании узла "Библиотеки" в окне "Проекты" можно убедиться в том, что среда IDE добавила необходимые артефакты Hibernate в качестве зависимостей. В узле "Библиотеки" представлены все прямые и транзитивные зависимости, необходимые для компиляции проекта. Артефакты, являющиеся прямыми зависимостями (зависимостями, определенными в POM проекта), отмечены цветными значками JAR. Значок артефакта имеет серый цвет, если артефакт является транзитивной зависимостью (артефакт, являющийся зависимостью одной или нескольких прямых зависимостей).

Пример экрана: зависимости в узле "Библиотеки" окна "Проекты"

Подробные сведения по артефакту можно посмотреть, щелкнув правой кнопкой файл JAR и выбрав команду "Посмотреть подробности артефакта". Окно "Artifact Viewer" содержит вкладки, показывающие информацию о выделенных артефактах. Например, на вкладке "Общие" представлены подробные сведения о координатах артефакта и его доступных версиях. На вкладке "График" показано визуальное представление зависимостей выделенного артефакта.

Пример экрана: вкладка "График" в Artifact Viewer с демонстрацией зависимостей

Также можно использовать вкладку "График" для обнаружения и устранения конфликта версий между зависимостями.

Изменение файла настройки библиотеки Hibernate

В этом упражнении будут изменены свойства по умолчанию, указанные в hibernate.cfg.xml, для включения функции протоколирования отладки для операторов SQL. Данное упражнение не является обязательным.

  1. Откройте hibernate.cfg.xml на вкладке "Проект". Для открытия файла можно развернуть узел "Файлы конфигурации" в окне "Проекты" и дважды щелкнуть hibernate.cfg.xml.
  2. Разверните узел "Свойства конфигурации" в области "Дополнительные свойства".
  3. Нажмите кнопку "Добавить" для открытия диалогового окна "Добавить свойство Hibernate".
  4. В диалоговом окне выберите свойство hibernate.show_sql и установите значение true. Нажмите кнопку "ОК". Это приведет ко включению протоколирования отладки операторов SQL.
    Диалоговое окно "Добавтиь свойство Hibernate" для свойства hibernate.show_sql

    Выбрав вкладку "XML" в редакторе, можно просмотреть файл в представлении XML. Файл должен выглядеть следующим образом:

    <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>
        </session-factory>
    </hibernate-configuration>
  5. Сохраните измененный файл.

После запуска приложения появится возможность просмотра запроса SQL, представленного в окне "Output" среды IDE.

Создание вспомогательного файла HibernateUtil.java

Для использования библиотеки Hibernate необходимо создать вспомогательный класс для обработки запуска и обращения к SessionFactory библиотеки Hibernate для получения объекта Session. Класс обеспечивает вызов метода configure() библиотеки Hibernate, загрузку файла настройки hibernate.cfg.xml и последующую сборку SessionFactory для получения объекта Session.

В этом разделе для создания вспомогательного класса HibernateUtil.java используется мастер создания файла.

  1. Щелкните правой кнопкой мыши узел "Исходные файлы" и выберите "Создать > Прочее" для открытия мастера создания файла "Новый файл".
  2. Выберите "Hibernate" из списка "Категории" и "HibernateUtil.java" из списка "Типы файлов". Нажмите кнопку "Далее".
  3. Введите HibernateUtil в качестве имени класса и sakila.util в качестве имени пакета. Нажмите кнопку "Готово".
Пример экрана: мастер создания Hibernate Util

После нажатия кнопки "Готово" в редакторе откроется класс HibernateUtil.java. Файл можно закрыть, т.к. необходимость в его изменении отсутствует.

Создание файлов сопоставления библиотеки Hibernate и классов Java

В этом руководстве для отображения данных в таблице "ACTOR" базы данных используется простой старый объект Java (POJO) Actor.java. Класс указывает поля для столбцов в таблицах и использует простые методы установки и получения значений для извлечения и записи данных. Для сопоставления Actor.java с таблицей "ACTOR" можно использовать файл сопоставления библиотеки Hibernate или аннотации в классе.

Мастер обратного проектирования, файлы отображения библиотеки Hibernate и объекты POJO могут использоваться в мастере "База данных" для создания нескольких объектов POJO и файлов отображения на основе выбранных таблиц базы данных. Кроме того, в среде IDE для упрощения создания отдельных объектов POJO и файлов отображения "с нуля" можно использовать мастера.

Примечание. При необходимости создания файлов для нескольких таблиц используйте мастер. В данном учебном курсе создается только один объект POJO и один файл отображения, благодаря чему эти файлы могут быть созданы по отдельности. Действия, необходимые для создания объектов POJO и файлов отображения по отдельности приведены в конце данного учебного курса.

Создание файла обратного проектирования

Для использования объектов POJO и файлов отображения в мастере "База данных" необходимо сначала создать файл обратного проектирования reveng.xml в папке src/main/resources, в которой был создан файл hibernate.cfg.xml.

  1. Щелкните правой кнопкой мыши узел "Исходные файлы" и выберите "Создать" > "Другие" для открытия мастера создания файлов.
  2. В списке "Категории" выберите "Hibernate", а в списке "Типы файлов" выберите "Мастер обратного проектирования Hibernate". Нажмите кнопку "Далее".
  3. Введите hibernate.reveng в качестве имени файла.
  4. Определите src/main/resources в качестве местоположения. Нажмите кнопку "Далее".
  5. Выберите элемент actor на панели "Доступные таблицы" и нажмите кнопку "Добавить". Нажмите кнопку "Готово".

Мастер создает файл обратного проектирования hibernate.reveng.xml. Файл обратного проектирования можно закрыть, поскольку его изменение не требуется.

Примечание. Для данного проекта требуется библиотека mysql-connector-jar-5.1.6.jar. Если JAR отсутствует в списке зависимостей проекта в узле "Библиотеки", добавьте эту зависимость, щелкнув правой кнопки мыши узел "Библиотеки" и выбрав параметр "Добавить зависимость".

Создание файлов сопоставления библиотеки Hibernate и объектов POJO на основе базы данных

Мастер создания файлов сопоставления библиотеки Hibernate и объектов POJO на основе базы данных создает файлы на основе таблиц, содержащихся в базе данных. При использовании этого мастера среда IDE создает объекты POJO и файлы отображения на основе таблиц базы данных, указанных в hibernate.reveng.xml, а затем добавляет записи отображения в файл hibernate.cfg.xml. При применении мастера можно выбрать файлы, которые должны быть созданы в среде IDE (например, только объекты POJO), и установить свойства создания кода (например, создание кода, использующего аннотации EJB 3).

  1. Щелкните правой кнопкой узел "Исходные файлы" в окне "Проекты" и выберите команду "Создать" > "Другие" для открытия мастера "Новый файл".
  2. Выберите "Файлы отображения библиотеки Hibernate и объекты POJO" в категории "Hibernate". Нажмите кнопку "Далее".
  3. Выберите файл hibernate.cfg.xml из раскрывающегося списка "Файл настройки Hibernate", если он еще не выбран.
  4. Выберите файл hibernate.cfg.xml из раскрывающегося списка "Файл обратного проектирования Hibernate", если он еще не выбран.
  5. Убедитесь в том, что выбраны пункты Код домена и Отображения XML Hibernate.
  6. Введите sakila.entity в качестве имени пакета в поле "Пакет". Нажмите кнопку "Готово".
Мастер создания файлов отображения библиотеки Hibernate и объектов POJO

После нажатия кнопки "Готово" в среде IDE создается объект POJO Actor.java со всеми необходимыми полями, сохраняемый в папке src/main/java/sakila/entity. Кроме того, в среде IDE создается файл отображения библиотеки Hibernate в папке src/main/resources/sakila/entity, а запись отображения добавляется в файл hibernate.cfg.xml.

Теперь при наличии объектов POJO и необходимых файлов, связанных с библиотекой Hibernate, для приложения можно создать простой внешний графический интерфейс пользователя на Java. Также необходимо создать, а затем добавить запрос HQL, обеспечивающий извлечение данных из базы данных. В рамках этого процесса для построения и тестирования запроса будет использован редактор HQL.

Создание графического интерфейса пользователя приложения

В этом упражнении будет создана простая форма JFrame с определенными полями для ввода и отображения данных. Также будет добавлена кнопка, инициирующая запрос к базе данных для извлечения данных.

При отсутствии знаний об использовании GUI Builder для создания форм можно ознакомиться с учебным курсом Введение в разработку графического интерфейса.

Создание формы Jframe

  1. Щелкните правой кнопкой мыши узел проекта в окне "Проекты" и выберите команду "Создать > Другие" для открытия мастера создания файла.
  2. Выберите шаблон "Форма JFrame" из категории "Формы Swing GUI". Нажмите кнопку "Далее".
  3. Введите DVDStoreAdmin в поле "Имя класса" и sakila.ui в поле "Пакет". Нажмите кнопку "Готово".

После нажатия кнопки "Готово" в среде IDE создается класс, а в представлении "Дизайн" редактора открывается форма JFrame.

Добавление элементов к форме

Теперь необходимо добавить элементы пользовательского интерфейса к форме. При открытии формы в представлении "Проект" в правой части рабочей области среды IDE появляется элемент "Палитра". Для добавления элемента к форме перетащите его из палитры в область формы. После добавления элемента к форме необходимо изменить значение по умолчанию свойства "Имя переменной" для этого элемента.

  1. Перетащите элемент "Label" из палитры и измените текст на Actor Profile.
  2. Перетащите элемент "Label" с палитры и измените текст на First Name.
  3. Перетащите элемент "Text Field", поместите его рядом с меткой "First Name" и удалите текст по умолчанию.

    При удалении текста по умолчанию текстовое поле сворачивается. Позже можно будет изменить размер текстового поля для настройки выравнивания элементов формы.

  4. Перетащите элемент "Label" из палитры и измените текст на Last Name.
  5. Перетащите элемент "Text Field", поместите его рядом с меткой "Last Name" и удалите текст по умолчанию.
  6. Перетащите элемент "Button" с палитры и измените текст на Query.
  7. Перетащите элемент "Table" с палитры в форму.
  8. Измените значения "Имя переменной" следующих элементов пользовательского интерфейса в соответствии со значениями, приведенными в следующей таблице.

    Для изменения значения "Имя переменной" элемента щелкните правой кнопкой мыши элемент в режиме проектирования и выберите команду "Изменить имя переменной". Кроме того, значение "Имя переменной" можно изменить непосредственно в окне "Инспектор".

    Присвоение значений "Имя переменной" элементам "Label" не требуется.

    ЭлементИмя переменной
    Текстовое поле "First Name"firstNameTextField
    Текстовое поле "Last Name"lastNameTextField
    Кнопка "Query"queryButton
    ТаблицаresultTable
  9. Измените размер текстового поля и выровняйте элементы формы.

    Можно активировать свойство "Переменная ширина" для текстовых полей, чтобы обеспечить изменение размера текстовых полей вместе с окном и идентичность расстояний между элементами.

  10. Сохраните изменения.

В режиме проектирования внешний вид формы выглядит так, как показано на следующем рисунке.

Форма графического пользовательского интерфейса в представлении редактора "Проект"

На этом этапе уже создана форма, и теперь необходимо создать код, обеспечивающий присваивание событий элементам формы. В следующем упражнении будут созданы запросы для извлечения данных на основе языка Hibernate Query Language. После создания запросов к форме будут добавлены методы, обеспечивающие вызов соответствующего запроса при нажатии кнопки "Query".

Создание запроса в редакторе запросов HQL Query Editor

В среде IDE создание и тестирование запросов на основе языка Hibernate Query Language (HQL) может осуществляться с использованием редактора запросов HQL Query Editor. После ввода запроса в редакторе отображается эквивалентный (переведенный) запрос SQL. При нажатии кнопки "Выполнить запрос HQL" на панели инструментов в среде IDE запрос выполняется, а результаты отображаются в нижней области редактора.

В этом упражнении редактор HQL Editor применяется для создания простых запросов HQL, позволяющих извлекать список подробных данных актеров на основе соответствия имени или фамилии. Перед добавлением запроса к классу редактор HQL Query Editor должен использоваться для проверки правильной работы подключения и корректности результатов запроса.

  1. Раскройте узел исходного пакета <default package> в узле "Другие исходные файлы" окна "Проекты".
  2. Щелкните правой кнопкой мыши файл hibernate.cfg.xml и выберите команду "Выполнить запрос HQL" для открытия редактора HQL Editor.
  3. Протестируйте подключение путем ввода from Actor в редакторе запросов HQL Query Editor. Нажмите кнопку "Выполнить запрос HQL" (Кнопка "Выполнить запрос HQL") на панели инструментов.

    При нажатии кнопки "Выполнить запрос HQL" результаты запроса должны отображаться в нижней области редактора запросов HQL Query Editor.

    Отображение результатов запроса HQL в редакторе запросов HQL Query Editor

    При нажатии кнопки "SQL", размещенной над результатами, на экране должен отобразиться соответствующий эквивалентный запрос SQL.

    select actor0_.actor_id as col_0_0_ from sakila.actor actor0_
    Отображение SQL запроса в редакторе запросов HQL Query Editor
  4. Введите следующий запрос в редактор запросов HQL Query Editor и нажмите кнопку "Выполнить запрос HQL" для проверки результатов запроса при вводе значения "PE" в строку поиска.
    from Actor a where a.firstName like 'PE%'

    Запрос возвращает список подробных данных тех актеров, чьи имена начинаются с символов "PE".

  5. Откройте новую вкладку редактора HQL Query Editor и введите следующий запрос на панели редактирования. Нажмите кнопку "Выполнить запрос HQL".
    from Actor a where a.lastName like 'MO%'

    Запрос возвращает список подробных данных актеров, чьи фамилии начинаются с символов "МО".

Тестирование запросов показывает, что запросы возвращают требуемые результаты. Теперь необходимо внедрить запросы в приложение и обеспечить вызов соответствующего запроса путем нажатия кнопки "Query" в форме.

Добавление запроса к форме

Теперь необходимо изменить DVDStoreAdmin.java для добавления строк запроса и создания методов, позволяющих формировать и вызывать запрос, включающий входные переменные. Также требуется изменить обработчик событий нажатия кнопок для вызова соответствующего запроса и добавить метод, обеспечивающий отображение результатов запроса в таблице.

  1. Откройте DVDStoreAdmin.java и выберите вкладку "Источник".
  2. Добавьте следующие строки запроса (выделенные полужирным шрифтом) к классу.
    public DVDStoreAdmin() {
        initComponents();
    }
    
    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 '";

    Запросы можно скопировать из вкладок редактора запросов HQL Query Editor в файл, а затем изменить код.

  3. Добавьте следующие методы для создания запроса на основе строки со вводимой пользователем информацией.
    private void runQueryBasedOnFirstName() {
        executeHQLQuery(QUERY_BASED_ON_FIRST_NAME + firstNameTextField.getText() + "%'");
    }
        
    private void runQueryBasedOnLastName() {
        executeHQLQuery(QUERY_BASED_ON_LAST_NAME + lastNameTextField.getText() + "%'");
    }

    Эти методы обеспечивают вызов метода с именем executeHQLQuery() и создание запроса путем объединения строки запроса с информацией пользователя, вводимой в строку поиска.

  4. Добавьте метод executeHQLQuery().
    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();
        }
    }

    Метод executeHQLQuery() обеспечивает вызов библиотеки Hibernate для выполнения выбранного запроса. В этом методе служебный класс HibernateUtil.java применяется для получения объекта Hibernate "Session".

  5. Исправьте параметры импорта для добавления операторов импорта в библиотеки Hibernate (org.hibernate.Query, org.hibernate.Session) и java.util.List.
  6. Создайте обработчик событий для кнопки "Query", переключившись в режим проектирования и дважды нажав кнопку "Query".

    В среде IDE будет создан метод queryButtonActionPerformed, который затем отобразится в режиме просмотра исходного кода.

  7. Измените метод queryButtonActionPerformed в режиме просмотра исходного кода путем добавления следующего кода, обеспечивающего выполнение запроса при нажатии кнопки пользователем.
    private void queryButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if(!firstNameTextField.getText().trim().equals("")) {
            runQueryBasedOnFirstName();
        } else if(!lastNameTextField.getText().trim().equals("")) {
            runQueryBasedOnLastName();
        }
    }
  8. Добавьте следующий метод для просмотра результатов в "JTable".
    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));
    }
  9. Исправьте параметры импорта (CTRL+SHIFT+I) для добавления java.util.Vector и сохраните измененные данные.

После сохранения формы проект можно запустить.

Запуск проекта Maven

После завершения написания программы вы можете создать проект и запустить приложение. При создании проекта Maven в среде IDE, Maven считывает POM проекта для идентификации его зависимостей. Все артефакты, определенные как зависимости, должны при этом находиться в локальном репозитории Maven. Если требуемый артефакт отсутствует в локальном репозитории, то перед попыткой создания и запуска проекта Maven выполнит его поиск в удаленном репозитории. После создания проекта Maven установит сгенерированный двоичный файл в качестве артефакта в локальном репозитории.

Примечания.

  • Создание и выполнение проекта в первый раз может занять некоторое время на проверку средой IDE всех зависимостей проекта. Последующие создания выполняются намного быстрее.
  • Для запуска данного приложения сначала необходимо определить класс Main.

Чтобы скомпилировать и запустить приложение выполните следующие действия.

  1. Щелкните правой кнопкой мыши узел проекта в окне "Проекты" и выберите команду "Свойства".
  2. Выберите категорию "Выполнить" в диалоговом окне "Свойства проекта".
  3. Введите sakila.ui.DVDStoreAdmin в поле "Основной класс". Нажмите кнопку "ОК".

    Также можно нажать кнопку "Обзор" и выбрать главный класс в диалоговом окне.

    Определение главного класса в диалоговом окне "Обзор главных классов"
  4. Нажмите кнопку "Выполнить главный проект" на главной панели инструментов для запуска приложения.

При вызове в среде IDE в проекте Maven операции Run параметры Maven выполняются в среде IDE совместно с операцией Run. Среда IDE имеет цели по умолчанию, связанные с операциями IDE, соответствующими упаковке проекта. Связанные с операцией Run цели можно просмотреть на панели "Действия" окна "Свойства" проекта.

Панель "Действия" в окне свойств проекта DVDStoreAdmin

Можно настроить привязку целей к операциям в панели "Действия" окна проекта "Свойства".

Форма графического интерфейса открывается при запуске приложения. Введите требуемую информацию в текстовые поля "First Name" или "Last Name" и нажмите кнопку "Query" для поиска актера и просмотра подробных данных.

Отображение результатов в приложении DVDStoreAdmin

При вызове окна "Output" в среде IDE можно просмотреть запрос SQL, инициировавший извлечение представленных результатов.

Загрузка проекта решения

Решение для данного учебного курса в виде проекта можно загрузить несколькими способами.

  • Загрузите архив завершенного проекта в формате zip.
  • Выполните проверку исходных файлов проекта на выходе из примеров NetBeans, выполнив перечисленные ниже действия.
    1. Выберите в главном меню "Группа > Subversion > Проверить".
    2. В диалоговом окне "Проверка" введите следующий URL-адрес репозитория:
      https://svn.netbeans.org/svn/samples~samples-source-code
      Нажмите кнопку "Далее".
    3. Нажмите кнопку "Обзор" для открытия диалогового окна "Обзор папок репозитория".
    4. Разверните корневой узел и выберите samples/java/DVDStoreAdmin-Maven. Нажмите кнопку "ОК".
    5. Укажите локальную папку для исходных файлов (папка должна быть пустой).
    6. Нажмите кнопку "Готово".

      После нажатия кнопки "Готово" среда IDE инициализирует локальную папку в качестве репозитория Subversion и выполняет проверку исходных файлов проекта на выходе.

    7. Щелкните команду "Открыть проект" в диалоговом окне, которое появится после завершения проверки.

    Примечания.

    • Процедура получения исходных файлов для редактирования из Kenai относится только к среде NetBeans IDE 6.7 и 6.8.
    • Для получения исходных файлов на редактирование из Kenai требуется клиент Subversion. Дополнительные сведения об установке Subversion приведены в разделе Настройка Subversion Руководства по Subversion в среде IDE NetBeans.

Создание объектов POJO и файлов сопоставления по отдельности

Поскольку объект POJO представляет собой простой класс Java, для создания класса и его последующей обработки в редакторе исходного кода с целью добавления необходимых полей, методов установки и получения можно использовать мастер "Новый класс Java". После создания объекта POJO мастер также можно использовать для создания файла сопоставления библиотеки Hibernate, обеспечивающего сопоставления класса с таблицей, и добавления информации о сопоставлении в файл hibernate.cfg.xml. При создании файла сопоставления "с нуля" необходимо сопоставить поля и столбцы в редакторе XML.

Примечание. Это упражнение не является обязательным и содержит информацию о том, каким образом создаются объект POJO и файл сопоставления, построенные с использованием мастера создания файлов сопоставления библиотеки Hibernate и POJO на основе базы данных.

  1. Щелкните правой кнопкой мыши узел "Исходные файлы" в окне "Проекты" и выберите команду "Создать > Класс Java" для открытия мастера создания класса Java.
  2. В мастере введите Actor в качестве имени класса и sakila.entity в качестве имени пакета. Нажмите кнопку "Готово".
  3. Внесите в класс следующие изменения (выделены полужирным шрифтом) для реализации интерфейса "Serializable" и добавьте поля для столбцов таблицы.
    public class Actor implements Serializable {
        private Short actorId;
        private String firstName;
        private String lastName;
        private Date lastUpdate;
    }
  4. Для создания методов установки и получения для полей поместите курсор вставки в редактор исходного кода, нажмите сочетание клавиш ALT+INS, а затем выберите команду "Методы получения и установки".
  5. В диалоговом окне "Создать методы получения и установки" выберите все поля и нажмите кнопку "Создать".
     Диалоговое окно "Создать методы получения и установки"

    В диалоговом окне "Создать методы получения и установки" можно использовать стрелку вверх на клавиатуре для перемещения выбранного элемента к узлу "Actor", а затем нажать клавишу ПРОБЕЛ и выбрать все поля "Actor".

  6. Исправьте операторы импорта и сохраните измененные данные.

После создания объекта POJO для таблицы необходимо создать файл сопоставления библиотеки Hibernate для класса Actor.java.

  1. Щелкните правой кнопкой мыши узел исходных файлов sakila.entity в окне "Проекты" и выберите "Создать" > "Другие" для открытия мастера создания файлов.
  2. Выберите "Файл сопоставления Hibernate" в категории "Hibernate". Нажмите кнопку "Далее".
  3. Введите Actor.hbm в поле "Имя файла" и укажите в качестве папки src/sakila/entity. Нажмите кнопку "Далее".
  4. Введите sakila.entity.Actor в поле "Класс для размещения".
  5. Выберите actor из раскрывающегося списка "Таблица базы данных", если это значение не было выбрано ранее. Нажмите кнопку "Готово".
    Мастер создания файлов сопоставления библиотеки Hibernate

    При нажатии кнопки "Готово" файл сопоставления библиотеки Hibernate Actor.hbm.xml откроется в редакторе исходного кода. Также в среде IDE выполняется автоматическое добавление записи для ресурса сопоставления в hibernate.cfg.xml. В целях просмотра подробных данных разверните узел "Сопоставление" в режиме проектирования hibernate.cfg.xml или в режиме XML. Запись mapping в обзоре XML будет выглядеть следующим образом:

            <mapping resource="sakila/entity/Actor.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
  6. Сопоставьте поля в Actor.java со столбцами в таблице "ACTOR" путем внесения следующих изменений (выделены полужирным шрифтом) в Actor.hbm.xml.
    <hibernate-mapping>
      <class name="sakila.entity.Actor" 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>
    </hibernate-mapping>

    Для заполнения значений при изменении файла сопоставления можно использовать функцию автозавершения кода.

    Примечание. По умолчанию созданный элемент class содержит закрывающий тег. Поскольку элементы свойства необходимо добавить между открывающим и закрывающим тегами элемента class, следует внести следующие изменения (выделены полужирным шрифтом). После внесения изменений можно использовать функцию автозавершения кода между тегами class.

    <hibernate-mapping>
      <class name="sakila.entity.Actor" table="actor">
      </class>
    </hibernate-mapping>
  7. Нажмите кнопку "Проверить XML" на панели инструментов и сохраните изменения.

Создание объектов POJO и файлов сопоставления библиотеки Hibernate может эффективно использоваться для дальнейшей настройки приложения.


Дополнительные сведения

Дополнительные сведения о создании приложений с графическим интерфейсом пользователя на базе Swing приведены в следующих учебных курсах: