Использование библиотеки Hibernate в приложении Java на базе Swing

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

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

Приложение, создаваемое в этом курсе, представляет собой средство администрирования, дополняющее веб-приложение "DVD Store". В данном руководстве описывается создание приложения, позволяющего запрашивать подробные данные актера на основе соответствия имени или фамилии. При необходимости приложение можно расширить путем добавления функциональных возможностей запроса подробных данных о фильме, а также добавления/обновления/удаления объектов. В рамках руководства используется СУБД MySQL и база данных "Sakila", однако в приложениях Hibernate допускается использование любого поддерживаемого сервера базы данных. База данных "Sakila" представляет собой типовую базу данных, которая может быть загружена с сайта MySQL. Информация о настройке базы данных "Sakila" приведена в следующих разделах.

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

Сведения о создании этого приложения с помощью Maven см. в разделе Создание приложения Maven Swing с помощью Hibernate.

Содержание

Содержимое на этой странице применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0

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

Программное обеспечение или материал Требуемая версия
IDE NetBeans 7.2, 7.3, 7.4, 8.0, Java
Комплект для разработчика на языке Java (JDK) версия 7 или 8
Сервер базы данных MySQL версия 5.x
База данных "Sakila" подключаемый модуль, который можно получить в центре обновления

Можно загрузить готовый проект в виде архива ZIP.

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

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

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

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

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

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

  5. Щелкните правой кнопкой мыши узел "Sakila" и выберите "Connect".

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

Создание проекта приложения Java на базе Swing

В этом упражнении будет создан простой проект приложения Java на базе Swing с именем "DVDStoreAdmin".

  1. Выберите команду "Файл" > "Создать проект" (CTRL+SHIFT+N). Выберите приложение Java из категории Java и нажмите "Next".
  2. Введите DVDStoreAdmin в качестве имени проекта и укажите местоположение проекта.
  3. Снимите флажок "Использовать отдельную папку", если он установлен.
    В рамках этого руководства копирование библиотек проекта в выделенную папку лишено смысла, поскольку совместное использование библиотек с другими пользователями не потребуется.
  4. Снимите флажок "Create Main Class". Нажмите кнопку "Завершить".

При нажатии кнопки "Finish" в среде IDE будет создан проект приложения Java. В проекте нет главного класса. Следует создать форму и установить ее в качестве главного класса.

Добавление поддержки библиотеки Hibernate к проекту

Для добавления поддержки библиотеки Hibernate к проекту J2SE необходимо добавить библиотеку Hibernate в проект. Библиотека Hibernate входит в состав IDE и может быть добавлена к любому проекту. Для этого щелкните правой кнопкой мыши узел 'Библиотеки' в окне 'Проекты', выберите 'Добавить библиотеку', а затем выберите библиотеку Hibernate в диалоговом окне 'Добавить библиотеку'.

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

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

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

  1. Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Other" для открытия мастера "New File".
  2. Выберите элемент "Hibernate Configuration Wizard" из категории "Hibernate". Нажмите кнопку "Далее".
  3. Оставьте значения по умолчанию на панели "Имя и местоположение" (создается файл в каталоге src). Нажмите кнопку "Далее".
  4. Выберите подключение "sakila" из раскрывающегося списка "Database Connection". Нажмите кнопку "Завершить".
Снимок создания подключения к базе данных

При нажатии кнопки "Finish" файл hibernate.cfg.xml откроется в редакторе исходного кода в среде IDE. В среде IDE файл настройки создается в корне контекстного пути к классам приложения (в окне "Files", "WEB-INF/classes"). В окне 'Проекты' файл находится в исходном пакете <пакет, заданный по умолчанию>. Файл настройки содержит информацию об отдельной базе данных. Если планируется подключение к нескольким базам данных, в проекте можно создать несколько файлов настройки (по одному для каждого сервера базы данных), но по умолчанию во вспомогательном служебном классе будет использоваться файл hibernate.cfg.xml, расположенный в корневом каталоге.

После разворачивания узла "Libraries" в окне "Projects" видно, что к проекту добавлены требуемые архивы JAR библиотеки Hibernate и архив JAR соединителя MySQL.

Снимок окна 'Проекты', в котором отображаются библиотеки Hibernate

Примечание. В среду NetBeans IDE 8.0 входят библиотеки Hibernate 4. Старые версии IDE, связанные с Hibernate 3.

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

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

  1. Откройте hibernate.cfg.xml на вкладке "Проект". Для открытия файла можно развернуть узел "Configuration Files" в окне "Projects" и дважды щелкнуть hibernate.cfg.xml.
  2. Разверните узел "Configuration Properties" в области "Optional Properties".
  3. Нажмите кнопку "Add" для открытия диалогового окна "Add Hibernate Property".
  4. В диалоговом окне выберите свойство hibernate.show_sql и установите значение true. Нажмите кнопку "ОК". Это приведет ко включению протоколирования отладки операторов SQL.
    Диалоговое окно 'Добавить свойство Hibernate' для свойства hibernate.show_sql
  5. Щелкните "Добавить" в узле "Различные свойства" и выберите hibernate.query.factory_class в раскрывающемся списке "Имя свойства".
  6. Введите org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory в качестве значения свойства.

    Класс 'translator factory' используется в библиотеке Hibernate 4, связанной с IDE.

    Нажмите кнопку "ОК".

    Диалоговое окно 'Добавить свойство Hibernate' для свойств hibernate.query.factory_class

    При использовании NetBeans IDE 7.4 или более ранней версии необходимо выбрать org.hibernate.hql.classic.ClassicQueryTranslatorFactory в качестве значения свойства в диалоговом окне. NetBeans IDE 7.4 и более ранние версии, связанные с библиотекой Hibernate 3.

    Диалоговое окно 'Добавить свойство Hibernate' для свойств hibernate.query.factory_class

    При выборе вкладки "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>
            <property name="hibernate.query.factory_class">org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory</property>
        </session-factory>
    </hibernate-configuration>
  7. Сохраните измененный файл.

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

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

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

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

  1. Щелкните правой кнопкой мыши узел "Source Packages" и выберите "New > Other" для открытия мастера "New File".
  2. Выберите "Hibernate" из списка "Categories" и "HibernateUtil.java" из списка "File Types". Нажмите кнопку "Далее".
    Описание создания HibernateUtil с помощью мастера создания файлов
  3. Введите HibernateUtil в качестве имени класса и sakila.util в качестве имени пакета. Нажмите кнопку "Завершить".

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

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

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

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

Примечания.

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

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

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

  1. Щелкните правой кнопкой мыши узел "Source Packages" и выберите "New > Other" для открытия мастера "New File".
  2. В списке "Categories" выберите "Hibernate", а в списке "File Types" выберите "Hibernate Reverse Engineering Wizard". Нажмите кнопку "Далее".
  3. Введите имя файла hibernate.reveng.
  4. В качестве местоположения оставьте значение по умолчанию src. Нажмите кнопку "Далее".
  5. Выберите элемент actor на панели "Available Tables" и нажмите кнопку "Add". Нажмите кнопку "Завершить".

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

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

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

  1. Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Other" для открытия мастера "New File".
  2. Выберите "Hibernate Mapping Files and POJOs from a Database" в категории "Hibernate". Нажмите кнопку "Далее".
  3. Выберите файл hibernate.cfg.xml из раскрывающегося списка "Hibernate Configuration File", если он еще не выбран.
  4. Выберите файл hibernate.cfg.xml из раскрывающегося списка "Hibernate Reverse Engineering File", если он еще не выбран.
  5. Убедитесь в том, что выбраны пункты Domain Code и Hibernate XML Mappings.
  6. Введите sakila.entity в качестве имени пакета в поле "Package". Нажмите кнопку "Завершить".
Мастер создания файлов сопоставления Hibernate и POJO

После нажатия кнопки "Finish" в среде IDE создается объект POJO Actor.java со всеми необходимыми полями и файл сопоставления библиотеки Hibernate; кроме того, в файл hibernate.cfg.xml добавляется запись сопоставления.

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

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

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

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

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

  1. Щелкните правой кнопкой мыши узел проекта в окне "Projects" и выберите "New > Other" для открытия мастера создания файла.
  2. Выберите шаблон "JFrame Form" из категории "Swing GUI Forms". Нажмите кнопку "Далее".
  3. Введите DVDStoreAdmin в поле "Class Name" и sakila.ui в поле "Package". Нажмите кнопку "Завершить".

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

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

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

  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. Измените значения "Variable Name" следующих элементов пользовательского интерфейса в соответствии со значениями, приведенными в следующей таблице.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    select actor0_.actor_id as col_0_0_ from sakila.actor actor0_ where (actor0_.first_name like 'PE%' )
  6. Откройте новую вкладку редактора HQL Query Editor и введите следующий запрос на панели редактирования. Нажмите кнопку "Run HQL Query".
    from Actor a where a.lastName like 'MO%'

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

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

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

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

  1. Откройте DVDStoreAdmin.java и выберите вкладку "Source".
  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. Щелкните правой кнопкой мыши в редакторе и выберите 'Исправить выражения импорта' (Ctrl-Shift-I; ⌘-Shift-I в Mac) для создания операторов импорта для библиотек 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; ⌘-Shift-I в Mac) для создания оператора импорта для java.util.Vector и java.util.List. Сохраните изменения.

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

Выполнение проекта

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

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

    В качестве альтернативы можно нажать кнопку "Browse" и выбрать главный класс в диалоговом окне.

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

Введите информацию в строке поиска для текстовых полей "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-Ant. Нажмите кнопку "ОК".
    5. Укажите локальную папку для исходных файлов (папка должна быть пустой).
    6. Нажмите кнопку "Завершить".

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

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

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

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

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

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

  1. Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Java Class" для открытия мастера создания класса 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-Insert, Ctrl-I на Mac) и выберите методы получения и установки в контекстном меню для создания методов получения и установки для полей.
  5. В диалоговом окне "Generate Getters and Setters" выберите все поля и нажмите кнопку "Generate".
    Диалоговое окно 'Создание методов получения и установки'

    В диалоговом окне "Generate Getters and Setters" можно использовать стрелку вверх на клавиатуре для перемещения выбранного элемента к узлу "Actor", а затем нажать клавишу "пробел" и выбрать все поля "Actor".

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

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

  1. Щелкните правой кнопкой мыши узел исходных файлов sakila.entity в окне "Projects" и выберите "New > Other" для открытия мастера создания файла "New File".
  2. Выберите "Hibernate Mapping File" в категории "Hibernate". Нажмите кнопку "Далее".
  3. Введите Actor.hbm в поле "File Name" и убедитесь в том, что выбрана папка src/sakila/entity. Нажмите кнопку "Далее".
  4. Введите sakila.entity.Actor в поле "Class to Map" и выберите actor из раскрывающегося списка "Database Table". Нажмите кнопку "Завершить".
    Мастер создания файлов сопоставления Hibernate

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

            <mapping resource="sakila/entity/Actor.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>
  5. Сопоставьте поля в 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>
  6. Нажмите кнопку "Validate XML" на панели инструментов и сохраните изменения.

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


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

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

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo