Использование библиотеки Hibernate в приложении Java на базе Swing
В данном учебном курсе описано создание и развертывание с помощью IDE NetBeans приложения Java на базе Swing, предназначенного для просмотра данных из базы данных. Приложение использует библиотеку Hibernate в качестве слоя сохранения состояния для извлечения POJO (простых объектов Java) из реляционной базы данных.
Библиотека Hibernate предоставляет средства для объектно-реляционного сопоставления (ORM). В руководстве демонстрируется поддержка библиотеки Hibernate в среде IDE и использование мастеров для создания необходимых файлов Hibernate. После создания объектов Java и настройки приложения для использования Hibernate создается графический пользовательский интерфейс для поиска и отображения данных.
Приложение, создаваемое в этом курсе, представляет собой средство администрирования, дополняющее веб-приложение "DVD Store". В данном руководстве описывается создание приложения, позволяющего запрашивать подробные данные актера на основе соответствия имени или фамилии. При необходимости приложение можно расширить путем добавления функциональных возможностей запроса подробных данных о фильме, а также добавления/обновления/удаления объектов. В рамках руководства используется СУБД MySQL и база данных "Sakila", однако в приложениях Hibernate допускается использование любого поддерживаемого сервера базы данных. База данных "Sakila" представляет собой типовую базу данных, которая может быть загружена с сайта MySQL. Информация о настройке базы данных "Sakila" приведена в следующих разделах.
Перед изучением этого курса можно ознакомиться со следующей документацией:
Сведения о создании этого приложения с помощью Maven см. в разделе Создание приложения Maven Swing с помощью Hibernate.
Содержание
Для работы с этим руководством требуется программное обеспечение и ресурсы, перечисленные ниже.
Можно загрузить готовый проект в виде архива ZIP.
Создание базы данных
В этом учебном курсе используется база данных MySQL с названием sakila. Пример базы данных не входит в устанавливаемую в среду IDE, поэтому перед изучением этого учебного курса необходимо создать базу данных.
База данных "Sakila" представляет собой свободно распространяемый пример базы данных, который можно загрузить с сайта MySQL. Для создания базы данных "Sakila" можно загрузить и установить подключаемый модуль "Sakila Sample Database" с использованием диспетчера подключаемых модулей. После установки подключаемого модуля можно создать базу данных "Sakila" в окне "Services". База данных "Sakila" будет добавлена к списку баз данных в диалоговом окне "Create MySQL database".
Для получения дополнительной информации о настройке среды IDE для работы с MySQL см. учебный курс Подключение к базе данных MySQL.
- Откройте диспетчер подключаемых модулей и установите подключаемый модуль "Sakila Sample Database".
- После установки подключаемого модуля запустите сервер базы данных MySQL: разверните узел "Databases" в окне "Services", щелкните правой кнопкой мыши узел "MySQL Server" и выберите "Start".
- Щелкните правой кнопкой мыши узел "MySQL Server" и выберите "Create Database".
- Выберите базу данных "Sakila"из раскрывающегося списка "New Database Name" в диалоговом окне "Create MySQL Database". Нажмите кнопку "OK".
При нажатии кнопки "OK" узел "Sakila" появится под узлом "MySQL Server".
- Щелкните правой кнопкой мыши узел "Sakila" и выберите "Connect".
После нажатия кнопки "Connect a database" под узлом "Databases" отобразится узел подключения к базе данных "Sakila" (jdbc:mysql://localhost:3306/sakila [username on Default]). При открытом подключении для просмотра данных в базе данных разверните этот узел подключения.
Создание проекта приложения Java на базе Swing
В этом упражнении будет создан простой проект приложения Java на базе Swing с именем "DVDStoreAdmin".
- Выберите команду "File" > "New Project" (Ctrl+Shift+N). Выберите приложение Java из категории Java и нажмите "Next".
- Введите DVDStoreAdmin в качестве имени проекта и укажите местоположение проекта.
- Снимите флажок "Use Dedicated Folder", если он установлен.
В рамках этого руководства копирование библиотек проекта в выделенную папку лишено смысла, поскольку совместное использование библиотек с другими пользователями не потребуется.
- Снимите флажок "Create Main Class". Нажмите кнопку "Finish".
При нажатии кнопки "Finish" в среде IDE будет создан проект приложения Java. В проекте нет главного класса. Следует создать форму и установить ее в качестве главного класса.
Добавление поддержки библиотеки Hibernate к проекту
Для добавления поддержки библиотеки Hibernate к проекту J2SE необходимо добавить библиотеку Hibernate в проект. Библиотека Hibernate входит в состав среды IDE. Для ее добавления к проекту щелкните правой кнопкой мыши узел "Libraries" в окне "Projects", выберите "Add Library", а затем библиотеку Hibernate в диалоговом окне "Add Library".
В среде IDE содержатся мастеры, упрощающие создание файлов библиотеки Hibernate, которые потребуются в проекте. Мастеры, включенные в среду IDE, могут использоваться для создания файла настройки библиотеки Hibernate и вспомогательного служебного класса. Если файл настройки библиотеки Hibernate создан с использованием мастера, библиотеки Hibernate автоматически добавляются к проекту.
Создание файла настройки библиотеки Hibernate
Файл настройки библиотеки Hibernate (hibernate.cfg.xml) содержит информацию о подключении к базе данных, сопоставлениях ресурсов и других свойствах подключения. При создании файла настройки Hibernate с использованием мастера подключение к базе данных определяется путем выбора из списка подключений, зарегистрированных в среде IDE. В ходе создания файла настройки подробная информация о подключении и сведения о диалекте добавляются автоматически в соответствии с выбранным подключением к базе данных. В среде IDE библиотека Hibernate также автоматически добавляется в путь класса проекта. После создания файла настройки можно изменить файл с использованием редактора с несколькими представлениями или внести изменения в код XML непосредственно в редакторе XML.
- Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Other" для открытия мастера "New File".
- Выберите элемент "Hibernate Configuration Wizard" из категории "Hibernate". Нажмите кнопку "Next".
- Оставьте значения по умолчанию на панели "Name and Location" (создается файл в каталоге src). Нажмите кнопку "Next".
- Выберите подключение "sakila" из раскрывающегося списка "Database Connection". Нажмите кнопку "Finish".
При нажатии кнопки "Finish" файл hibernate.cfg.xml откроется в редакторе исходного кода в среде IDE. В среде IDE файл настройки создается в корне контекстного пути к классам приложения (в окне "Files", "WEB-INF/classes"). В окне "Projects" файл располагается в пакете исходных файлов <default package>. Файл настройки содержит информацию об отдельной базе данных. Если планируется подключение к нескольким базам данных, в проекте можно создать несколько файлов настройки (по одному для каждого сервера базы данных), но по умолчанию во вспомогательном служебном классе будет использоваться файл hibernate.cfg.xml, расположенный в корневом каталоге.
После разворачивания узла "Libraries" в окне "Projects" видно, что к проекту добавлены требуемые архивы JAR библиотеки Hibernate и архив JAR соединителя MySQL.
Изменение файла настройки библиотеки Hibernate
В этом упражнении будут изменены свойства по умолчанию, указанные в hibernate.cfg.xml, для включения функции протоколирования отладки для операторов SQL.
- Откройте hibernate.cfg.xml на вкладке "Проект". Для открытия файла можно развернуть узел "Configuration Files" в окне "Projects" и дважды щелкнуть hibernate.cfg.xml.
- Разверните узел "Configuration Properties" в области "Optional Properties".
- Нажмите кнопку "Add" для открытия диалогового окна "Add Hibernate Property".
- В диалоговом окне выберите свойство hibernate.show_sql и установите значение true. Нажмите кнопку "OK". Это приведет ко включению протоколирования отладки операторов SQL.

- Щелкните "Добавить" в узле "Различные свойства" и выберите hibernate.query.factory_class в раскрывающемся списке "Имя свойства".
- Выберите org.hibernate.hql.classic.ClassicQueryTranslatorFactory как "Значение свойства". Нажмите кнопку "OK".
Примечание для NetBeans IDE 6.9. Необходимо ввести org.hibernate.hql.classic.ClassicQueryTranslatorFactory как "Значение свойства". В среде NetBeans IDE 6.9 "Значение свойства" в раскрывающемся списке для класса фабрики неверное.
При выборе вкладки "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.classic.ClassicQueryTranslatorFactory</property>
</session-factory>
</hibernate-configuration>
- Сохраните измененный файл.
После запуска приложения появится возможность просмотра запроса SQL, представленного в окне "Output" среды IDE.
Создание вспомогательного файла HibernateUtil.java
Для использования библиотеки Hibernate необходимо создать вспомогательный класс для обработки запуска и обращения к SessionFactory библиотеки Hibernate для получения объекта "Session". Класс обеспечивает вызов метода configure() библиотеки Hibernate, загрузку файла настройки hibernate.cfg.xml и последующую сборку SessionFactory для получения объекта "Session".
В этом разделе для создания вспомогательного класса HibernateUtil.java используется мастер создания файла.
- Щелкните правой кнопкой мыши узел "Source Packages" и выберите "New > Other" для открытия мастера "New File".
- Выберите "Hibernate" из списка "Categories" и "HibernateUtil.java" из списка "File Types". Нажмите кнопку "Next".
- Введите HibernateUtil в качестве имени класса и sakila.util в качестве имени пакета. Нажмите кнопку "Finish".
После нажатия кнопки "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.
- Щелкните правой кнопкой мыши узел "Source Packages" и выберите "New > Other" для открытия мастера "New File".
- В списке "Categories" выберите "Hibernate", а в списке "File Types" выберите "Hibernate Reverse Engineering Wizard". Нажмите кнопку "Next".
- Введите имя файла hibernate.reveng.
- В качестве местоположения оставьте значение по умолчанию src. Нажмите кнопку "Next".
- Выберите элемент actor на панели "Available Tables" и нажмите кнопку "Add". Нажмите кнопку "Finish".
Мастер создает файл обратного проектирования hibernate.reveng.xml. Файл обратного проектирования можно закрыть, поскольку его изменение не требуется.
Создание файлов сопоставления библиотеки Hibernate и объектов POJO на основе базы данных
Мастер создания файлов сопоставления библиотеки Hibernate и объектов POJO на основе базы данных создает файлы на основе таблиц, содержащихся в базе данных. При использовании этого мастера среда IDE создает объекты POJO и файлы отображения на основе таблиц базы данных, указанных в hibernate.reveng.xml, а затем добавляет записи отображения в файл hibernate.cfg.xml. При применении мастера можно выбрать файлы, которые должны быть созданы в среде IDE (например, только объекты POJO), и установить свойства создания кода (например, создание кода, использующего аннотации EJB 3).
- Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Other" для открытия мастера "New File".
- Выберите "Hibernate Mapping Files and POJOs from a Database" в категории "Hibernate". Нажмите кнопку "Next".
- Выберите файл hibernate.cfg.xml из раскрывающегося списка "Hibernate Configuration File", если он еще не выбран.
- Выберите файл hibernate.cfg.xml из раскрывающегося списка "Hibernate Reverse Engineering File", если он еще не выбран.
- Убедитесь в том, что выбраны пункты Domain Code и Hibernate XML Mappings.
- Введите sakila.entity в качестве имени пакета в поле "Package". Нажмите кнопку "Finish".
После нажатия кнопки "Finish" в среде IDE создается объект POJO Actor.java со всеми необходимыми полями и файл сопоставления библиотеки Hibernate; кроме того, в файл hibernate.cfg.xml добавляется запись сопоставления.
Теперь при наличии объектов POJO и необходимых файлов, связанных с библиотекой Hibernate для приложения можно создать простой внешний графический интерфейс пользователя на Java. Также необходимо создать, а затем добавить запрос HQL, обеспечивающий извлечение данных из базы данных. В рамках этого процесса для построения и тестирования запроса будет использован редактор HQL.
Создание графического интерфейса пользователя приложения
В этом упражнении будет создана простая форма JFrame с определенными полями для ввода и отображения данных. Также будет добавлена кнопка, инициирующая запрос к базе данных для извлечения данных.
При отсутствии знаний об использовании GUI Builder для создания форм можно ознакомиться с учебным курсом Введение в разработку графического интерфейса.
Создание формы Jframe
- Щелкните правой кнопкой мыши узел проекта в окне "Projects" и выберите "New > Other" для открытия мастера создания файла.
- Выберите шаблон "JFrame Form" из категории "Swing GUI Forms". Нажмите кнопку "Next".
- Введите DVDStoreAdmin в поле "Class Name" и sakila.ui в поле "Package". Нажмите кнопку "Finish".
После нажатия кнопки "Finish" в среде IDE создается класс, а форма JFrame открывается в режиме проектирования редактора.
Добавление элементов к форме
Теперь необходимо добавить элементы пользовательского интерфейса к форме. При открытии формы в режиме проектирования в редакторе в левой части рабочей области среды IDE появляется палитра. Для добавления элемента к форме перетащите элемент с палитры в область формы. После добавления элемента к форме необходимо изменить значение по умолчанию свойства "Variable Name" для этого элемента.
- Перетащите элемент "Label" из палитры и измените текст на Actor Profile.
- Перетащите элемент "Label" с палитры и измените текст на First Name.
- Перетащите элемент "Text Field", поместите его рядом с меткой "First Name" и удалите текст по умолчанию.
- Перетащите элемент "Label" с палитры и измените текст на Last Name.
- Перетащите элемент "Text Field", поместите его рядом с меткой "Last Name" и удалите текст по умолчанию.
- Перетащите элемент "Button" с палитры и измените текст на Query.
- Перетащите элемент "Table" с палитры в форму.
- Измените значения "Variable Name" следующих элементов пользовательского интерфейса в соответствии со значениями, приведенными в следующей таблице.
Для изменения значения "Variable Name" элемента щелкните правой кнопкой мыши элемент в режиме проектирования и выберите параметр "Change Variable Name". Кроме того, значение "Variable Name" можно изменить непосредственно в окне "Inspector".
Присвоение значений "Variable Name" элементам "Label" не требуется.
| Текстовое поле "First Name" | firstNameTextField |
| Текстовое поле "Last Name" | lastNameTextField |
| Кнопка "Query" | queryButton |
| Таблица | resultTable |
- Сохраните изменения.
В режиме проектирования внешний вид формы выглядит так, как показано на следующем рисунке.
На этом этапе уже создана форма, и теперь необходимо создать код, обеспечивающий присваивание событий элементам формы. В следующем упражнении будут созданы запросы для извлечения данных на основе языка 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 должен использоваться для проверки правильной работы подключения и корректности результатов запроса. Перед выполнением запроса необходимо скомпилировать приложение.
- Правой кнопкой мыши щелкните узел проекта и выберите команду "Построить".
- Разверните исходный узел пакета <default package> в окне "Projects".
- Щелкните правой кнопкой мыши файл hibernate.cfg.xml и выберите "Run HQL Query" для открытия редактора HQL Editor.
- Протестируйте подключение путем ввода from Actor в редакторе запросов HQL Query Editor. Нажмите кнопку "Run HQL Query" (
) на панели инструментов.
При нажатии кнопки "Run HQL Query" результаты запроса должны отображаться в нижней области редактора запросов HQL Query Editor.
- Введите следующий запрос в редактор запросов 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%' )
- Откройте новую вкладку редактора HQL Query Editor и введите следующий запрос на панели редактирования. Нажмите кнопку "Run HQL Query".
from Actor a where a.lastName like 'MO%'
Запрос возвращает список подробных данных актеров, чьи фамилии начинаются с символов "МО".
Тестирование запросов показывает, что запросы возвращают требуемые результаты. Теперь необходимо внедрить запросы в приложение и обеспечить вызов соответствующего запроса путем нажатия кнопки "Query" в форме.
Добавление запроса к форме
Теперь необходимо изменить DVDStoreAdmin.java для добавления строк запроса и создания методов, позволяющих формировать и вызывать запрос, включающий входные переменные. Также требуется изменить обработчик событий нажатия кнопок для вызова соответствующего запроса и добавить метод, обеспечивающий отображение результатов запроса в таблице.
- Откройте DVDStoreAdmin.java и выберите вкладку "Source".
- Добавьте следующие строки запроса (выделенные полужирным шрифтом) к классу.
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 в файл, а затем изменить код.
- Добавьте следующие методы для создания запроса на основе строки со вводимой пользователем информацией.
private void runQueryBasedOnFirstName() {
executeHQLQuery(QUERY_BASED_ON_FIRST_NAME + firstNameTextField.getText() + "%'");
}
private void runQueryBasedOnLastName() {
executeHQLQuery(QUERY_BASED_ON_LAST_NAME + lastNameTextField.getText() + "%'");
}
Эти методы обеспечивают вызов метода с именем executeHQLQuery() и создание запроса путем объединения строки запроса с информацией пользователя, вводимой в строку поиска.
- Добавьте метод 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".
- Исправьте параметры импорта для добавления операторов импорта в библиотеки Hibernate (org.hibernate.Query, org.hibernate.Session) и java.util.List.
- Создайте обработчик событий для кнопки "Query", переключившись в режим проектирования и дважды нажав кнопку "Query".
В среде IDE будет создан метод queryButtonActionPerformed, который затем отобразится в режиме просмотра исходного кода.
- Измените метод queryButtonActionPerformed в режиме просмотра исходного кода путем добавления следующего кода, обеспечивающего выполнение запроса при нажатии кнопки пользователем.
private void queryButtonActionPerformed(java.awt.event.ActionEvent evt) {
if(!firstNameTextField.getText().trim().equals("")) {
runQueryBasedOnFirstName();
} else if(!lastNameTextField.getText().trim().equals("")) {
runQueryBasedOnLastName();
}
}
- Добавьте следующий метод для просмотра результатов в "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));
}
- Исправьте параметры импорта для добавления java.util.Vector и сохраните измененные данные.
После сохранения формы можно запустить проект.
Выполнение проекта
После завершения создания кода можно запустить приложение. Перед выполнением проекта необходимо указать главный класс приложения в диалоговом окне свойств проекта. Если главный класс не указан, при первом запуске приложения отобразится запрос на его установку.
- Щелкните правой кнопкой мыши узел проекта в окне "Projects" и выберите "Properties".
- Выберите категорию "Run" в диалоговом окне "Project Properties".
- Введите sakila.ui.DVDStoreAdmin в поле "Main Class". Нажмите кнопку "OK".
В качестве альтернативы можно нажать кнопку "Browse" и выбрать главный класс в диалоговом окне.
- Нажмите кнопку "Run Main Project" на главной панели инструментов для запуска приложения.
Введите информацию в строке поиска для текстовых полей "First Name" или "Last Name" и нажмите кнопку "Query" для поиска актера и просмотра подробных данных.
При вызове окна "Output" в среде IDE можно просмотреть запрос SQL, инициировавший извлечение представленных результатов.
Загрузка проекта решения
Решение для данного учебного курса в виде проекта можно загрузить несколькими способами.
Создание объектов POJO и файлов сопоставления по отдельности
Поскольку объект POJO представляет собой простой класс Java, для создания класса и его последующей обработки в редакторе исходного кода с целью добавления необходимых полей, методов установки и получения можно использовать мастер "New Java Class". После создания объекта POJO мастер также можно использовать для создания файла сопоставления библиотеки Hibernate, обеспечивающего сопоставления класса с таблицей, и добавления информации о сопоставлении в файл hibernate.cfg.xml. При создании файла сопоставления "с нуля" необходимо сопоставить поля и столбцы в редакторе XML.
Примечание. Это упражнение не является обязательным и содержит информацию о том, каким образом создаются объект POJO и файл сопоставления, построенные с использованием мастера создания файлов сопоставления библиотеки Hibernate и POJO на основе базы данных.
- Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Java Class" для открытия мастера создания класса Java.
- В мастере введите Actor в качестве имени класса и sakila.entity в качестве имени пакета. Нажмите кнопку "Finish".
- Внесите в класс следующие изменения (выделены полужирным шрифтом) для реализации интерфейса "Serializable" и добавьте поля для столбцов таблицы.
public class Actor implements Serializable {
private Short actorId;
private String firstName;
private String lastName;
private Date lastUpdate;
}
- Для создания методов установки и получения для полей поместите курсор вставки в редактор исходного кода, нажмите Alt+Ins, а затем выберите "Getter and Setter".
- В диалоговом окне "Generate Getters and Setters" выберите все поля и нажмите кнопку "Generate".
В диалоговом окне "Generate Getters and Setters" можно использовать стрелку вверх на клавиатуре для перемещения выбранного элемента к узлу "Actor", а затем нажать клавишу "пробел" и выбрать все поля "Actor".
- Исправьте операторы импорта и сохраните измененные данные.
После создания объекта POJO для таблицы необходимо создать файл сопоставления библиотеки Hibernate для класса Actor.java.
- Щелкните правой кнопкой мыши узел исходных файлов sakila.entity в окне "Projects" и выберите "New > Other" для открытия мастера создания файла "New File".
- Выберите "Hibernate Mapping File" в категории "Hibernate". Нажмите кнопку "Next".
- Введите Actor.hbm в поле "File Name" и убедитесь в том, что выбрана папка src/sakila/entity. Нажмите кнопку "Next".
- Введите sakila.entity.Actor в поле "Class to Map" и выберите actor из раскрывающегося списка "Database Table". Нажмите кнопку "Finish".
При нажатии кнопки "Finish" файл сопоставления библиотеки 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>
- Сопоставьте поля в 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>
- Нажмите кнопку "Validate XML" на панели инструментов и сохраните изменения.
Создание объектов POJO и файлов сопоставления библиотеки Hibernate может эффективно использоваться для дальнейшей настройки приложения.
Дополнительные сведения
Для получения дополнительных сведений о создании приложений с графическим интерфейсом пользователя на базе Swing см. следующие учебные курсы.