corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Создание приложения рабочей среды на Java для работы с базой данных

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

  • Интерфейс API сохранения состояния Java (JPA), позволяющий использовать код Java для взаимодействия с базами данных.
  • Технология привязки сериализуемых компонентов (JSR-295), предоставляющая способ синхронизации значений свойств различных элементов JavaBeans. Например, привязка сериализуемых компонентов может использоваться для сохранения значений ячеек в отображаемом элементе JTable и поддержания синхронизации со значениями полей в классе сущности. (В свою очередь, класс сущности представляет таблицу базы данных.)
  • Платформа приложений Swing (JSR-296) содержит определенные сборочные блоки, которые целесообразно использовать для быстрого создания приложений рабочей среды.

В качестве примера будет создано приложение типа CRUD (Create, Read, Update, Delete – создание, чтение, обновление, удаление) для работы с базой данных при помощи пользовательского элемента, предназначенного для отображения данных (предварительный просмотр проекта автомобиля).

Это руководство в значительной степени основано на экранной демонстрации выполнения описываемых действий в разработочной сборке предыдущей версии среды IDE. Со времени создания этой демонстрации часть интерфейса пользователя изменилась, поэтому могут быть заметны некоторые различия между настоящим руководством и демонстрационным примером. Можно просмотреть демонстрацию (приблизительно 9 минут) сейчас или загрузить ее в виде файла ZIP.

Предполагаемая продолжительность: 45 минут

Содержание

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

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

Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans версия 6.9
Комплект для разработчика на языке Java (JDK) версия 6
Сервер базы данных Java DB (Java DB поставляется с JDK 6).
Сценарий SQL базы данных автомобилей
Проект "CarPreview"

Настройка базы данных

Перед созданием приложения рабочей среды типа CRUD (Create, Read, Update, Delete – создание, чтение, обновление, удаление) в среде IDE необходимо настроить подключение к базе данных, которую будет использовать это приложение. Предварительная настройка этого подключения позволит использовать функции среды IDE для автоматизации привязки базы данных к приложению.

В этом руководстве приведены указания по работе с базой данных Java DB, поскольку в среде IDE имеется удобный интерфейс для запуска и останова сервера базы данных Java. Однако без особых затруднений можно использовать и другой сервер базы данных.

Сначала необходимо убедиться в том, что база данных Java зарегистрирована в среде IDE. В ряде случаев регистрация базы данных Java в среде IDE выполняется автоматически, например, при регистрации сервера приложений GlassFish или при работе с JDK 6. Если база данных Java не зарегистрирована в среде IDE, необходимо выполнить ее регистрацию вручную.

Для проверки регистрации базы данных Java в среде IDE выполните следующие действия:

  1. Откройте окно "Services".
  2. Щелкните правой кнопкой мыши узел "Databases > Java DB" и выберите "Properties".

    Если база данных Java зарегистрирована, поля "Java DB Installation" и "Database Location" будут заполнены.

    Если база данных Java не зарегистрирована, заполните следующие два поля:

    • Java DB Installation. Введите путь к серверу базы данных.
    • Database Location. Укажите папку, в которой будут храниться базы данных.
  3. Нажмите кнопку "OK".

Запуск сервера и создание базы данных

После регистрации базы данных Java в среде IDE можно легко запускать и останавливать сервер базы данных, а также создавать новые базы данных.

Для запуска сервера базы данных в среде IDE выполните следующие действия:

  • В окне "Services" щелкните правой кнопкой мыши "Databases > Java DB", а затем выберите "Start Server".

    Если местоположение для базы данных еще не определено, появится диалоговое окно "Set Database Location". Введите местоположение сервера БД, на котором будут храниться базы данных. При необходимости можно создать новую папку.

После запуска сервера в окне "Output" откроется вкладка "Java DB Database Process", и появится следующее сообщение:

Apache Derby Network Server - 10.2.2.0 - (485682) started and ready
        to accept connections on port 1527 at 2007-09-05 10:26:25.424 GMT

Для создания базы данных выполните следующие действия:

  1. В окне "Services" щелкните правой кнопкой мыши "Databases > Java DB", а затем выберите "Create Database".
  2. В текстовом поле "Database Name" введите car_database. Введите "nbuser" в полях "User Name" и "Password".
  3. Нажмите кнопку "OK".

Подключение к базе данных

К настоящему моменту запущен сервер базы данных и создана новая база данных. Однако до начала работы с базой данных в среде IDE необходимо подключиться к этой базе данных. Для подключения к базе данных car_database:

  1. Перейдите в окно "Services" (Ctrl+5) и разверните узел "Databases", в котором должна отображаться новая база данных.
  2. Щелкните правой кнопкой мыши узел подключения к базе данных (jdbc:derby://localhost:1527/car_database[nbuser on NBUSER]) и выберите "Connect".

    Значок узла подключения должен после этого стать целым (значок узла подключения), что указывает на успешное подключение.

    car_database под узлом "Databases" в окне "Services"
  3. Разверните узел подключения, щелкните его подузел "Tables" и выберите "Execute Command".
  4. Скопируйте содержимое файла car.sql и вставьте его на вкладку "SQL Command 1" редактора исходного кода.

    Это сценарий SQL, который заполнит базу данных информацией об автомобилях.

  5. Для запуска сценария нажмите кнопку "Run SQL" (кнопка "Run SQL") на панели инструментов редактора исходного кода.

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

  1. Выберите "File > New Project".
  2. На первом экране мастера разверните категорию "Java" и выберите шаблон "Java Desktop Application". Нажмите кнопку "Next".

    Шаблон "Java Desktop Application" содержит целый ряд основных функций визуального приложения, в том числе основные пункты меню и команды.

  3. На странице мастера "Name and Location" выполните следующие действия:
    1. Введите CarsApp в поле "Project Name". Значение этого поля определяет имя проекта в окне "Projects".
    2. Установите флажок "Set as Main Project".
    3. (Дополнительно) Измените значение поля "Project Location", определяющего местоположение метаданных проекта.
    4. (Дополнительно) Установите флажок "Use Dedicated Folder for Storing Libraries" и укажите местоположение папки библиотек. Для получения дополнительных сведений об этом параметре см. раздел Распределение проекта библиотеки.
    5. В поле "Choose Application Shell" выберите "Database Application".
    6. Нажмите кнопку "Next".
  4. На странице мастера "Master Table" выберите подключение к базе данных для базы данных CAR. Адрес для доступа к базе данных должен выглядеть приблизительно следующим образом: jdbc:derby://localhost:1527/car_database[nbuser on NBUSER]
  5. Введите пароль (nbuser) для базы данных и установите флажок "Remember Password During This Session".

    После подключения к базе данных в поле "Database Table" должна отображаться таблица CAR, а в списке "Columns to Include" должны содержаться имена 10 столбцов базы данных CAR. Пока в приложении будут использоваться только пять из них.

  6. Выберите нижние пять имен столбцов (начиная с SUN_ROOF и заканчивая MODERNNESS) и нажмите кнопку < для их перемещения в левый столбец. Нажмите кнопку "Next".
  7. На экране "Detail Options" выберите "Finish".

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

Выполнение созданного приложения

К настоящему моменту уже запущено простое приложение с графическим интерфейсом, предоставляющим следующие возможности:

  • Просмотр и изменение значений в пяти столбцах базы данных CAR.
  • Основные пункты меню.
  • Сохранение состояния окна между сеансами. При закрытии приложения сохраняется информация о позиции и размере окна. Поэтому при новом открытии приложения окно отображается в той же самой позиции, в которой оно было закрыто.
  • Настраиваемое диалоговое окно "About".
  • Файлы .properties, содержащие метки в интерфейсе пользователя. Использование файлов .properties является надежным способом сохранения логики кода отдельно от текста, который появляется в интерфейсе пользователя приложения. Такое разделение, помимо прочего, упрощает локализацию программы.

Для просмотра некоторых функций, встроенных в приложение, выполните следующие действия:

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

    Через несколько секунд будет выполнен запуск приложения, и появится окно "Database Application Example". Это окно содержит таблицу и несколько элементов управления, которые позволяют внести изменения в базу данных CARS.

  2. Выберите первую запись в таблице (для Acura).
  3. Выберите текстовое поле "Price" и замените существующее значение на 46999. Затем нажмите клавишу Enter.

    В таблице должно появиться новое значение. (Однако это значение не отражается в базе данных, если не была нажата кнопка "Save".)

    Таким же образом можно обновить любые другие значения таблицы.

  4. Для создания новой записи нажмите кнопку "New". Затем введите значения для каждого из полей ("Make", "Model", "Price", "Body Style", "Color"). Например, можно вести значения Trabant, Classic, 1000, wagon и blue. Для сохранения введенных значений в базе данных нажмите кнопку "Save".
  5. Щелкните строку заголовка "Database Application Example" и перетащите приложение в другую область экрана.
  6. Щелкните левую границу окна "Database Application Example" и переместите ее влево для увеличения размера окна.
  7. В строке меню "Database Application Example" выберите "File > Exit".
  8. В среде IDE щелкните правой кнопкой мыши узел проекта и выберите "Run Project".

    Окно "Database Application Example" откроется с теми же размерами и расположением, которые оно имело при закрытии приложения.

Проверка созданных компонентов приложения

Связь между главной таблицей (элемент JTable) и базой данных обрабатывается сочетанием следующих механизмов, автоматически созданных средой IDE:

  • Класс сущности Car.java, используемый для чтения и записи данных в таблицу базы данных CAR. Классы сущностей относятся к особому типу классов, которые позволяют взаимодействовать с базами данных через код Java. Классы сущностей используют аннотации Java для сопоставления полей класса со столбцами базы данных.
  • Файл META-INF/persistence.xml, определяющий связь между базой данных и классом сущности. Этот файл также известен как блок сохранения состояния.
  • Использование привязки компонентов для связи свойств класса объектов со свойствами элемента JTable. Привязки снриализуемых компонентов являются новой технологией, основанной на JSR 295, которая, возможно, будет добавлена в новую версию Java SE.
  • Объекты entityManager, query и list, определенные в классе CarsView и перечисленные в окне "Inspector".
    • Объект диспетчера сущностей используется для получения и передачи данных в пределах определенной области блока сохранения состояния.
    • Объект запроса определяет, каким образом определенный набор данных извлекается из объекта диспетчера сущностей. (Можно изменить способ работы объекта запроса путем выбора этого объекта в окне "Inspector" и изменения свойства query в таблице свойств.) Свойство query использует язык запросов JPA.
    • Объект списка является наблюдаемой коллекцией, содержащей данные из запроса. Наблюдаемая коллекция представляет собой особый вид коллекции, для которой можно установить прослушиватель, отвечающий за обнаружение изменений в коллекции.

При помощи окна "Inspector" и таблицы свойств можно проверить привязку элемента JTable к данным:

  1. В окне "Inspector" выберите "mainPanel [JPanel] > masterScrollPane [ScrollPane] > узел masterTable [JTable]". Затем выберите вкладку "Binding" в окне "Properties".
  2. Просмотрите свойства элементов для проверки их привязки к списку.
  3. Нажмите кнопку с многоточием [...] для вызова средства настройки "Bind masterTable.elements", в котором можно произвести дальнейшую настройку привязок между таблицей и базой данных. Например, средство настройки позволяет определить привязываемые столбцы таблицы.

Кроме категории "Binding" в таблице свойств также можно использовать пункт "Bind" в контекстном меню.

Добавление новых элементов управления

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

Для добавления дополнительных элементов выполните следующие действия:

  1. Добавьте первый ползунок, нажав кнопку "Slider" на палитре и далее щелкнув форму над кнопкой "New". Перед тем, как щелкнуть форму для вставки ползунка, следует убедиться, что не отображаются горизонтальные направляющие. Эти линии указывают, что ползунок будет вставлен в ту же строку, что и поля или кнопки. Для определения места расположения ползунка в форме см. рисунок ниже.

    На рисунке показано соответствующее размещение элемента управления JSlider перед фиксацией его расположения в форме.

    Примечание: В случае ошибочного размещения этого элемента, приводящего к нежелательным изменениям структуры, для отмены изменений можно использовать команду "Undo". Выберите "Edit > Undo" или нажмите сочетание клавиш Ctrl-Z.

  2. При необходимости растяните ползунок влево для его выравнивания по левому краю текстовых полей.
  3. Растяните ползунок вправо на всю ширину формы.
  4. Добавьте подпись с левой стороны от ползунка и введите текст Tire Size. (Для изменения текста сначала щелкните подпись.)
  5. Под первым ползунком разместите второй и при необходимости скорректируйте его ширину и выравнивание.
  6. Добавьте еще одну подпись под подписью "Tire Size" и введите текст Modernness.
  7. Под ползунками добавьте два флажка с текстом Spoiler и Sun Roof. (Для изменения текста сначала щелкните флажок один раз и через некоторое время щелкните его второй раз. Можно также щелкнуть флажок правой кнопкой мыши и выбрать "Edit Text".)

Форма должна выглядеть примерно следующим образом:

Пример экрана: форма с добавленными элементами управления в области проектирования

Привязка элементов управления к значениям в таблице

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

Для привязки ползунков к соответствующим элементам таблицы:

  1. В форме щелкните правой кнопкой мыши ползунок "Tire Size" и выберите "Bind > value".
  2. В раскрывающемся списке "Binding Source" диалогового окна "Binding" выберите "masterTable".
  3. В раскрывающемся списке "Binding Expression" выберите "selectedElement > tiresize".

    Диалоговое окно "Bind" с привязкой поля "Modernness" ко второму ползунку.

  4. Щелкните правой кнопкой мыши ползунок "Modernness" в форме и выберите "Bind > value".
  5. В раскрывающемся списке "Binding Source" диалогового окна "Binding" выберите "masterTable".
  6. В раскрывающемся списке "Binding Expression" выберите "selectedElement > modernness".

Для привязки флажков к соответствующим элементам таблицы:

  1. Щелкните правой кнопкой мыши флажок "Spoiler" в форме и выберите "Bind > selected".
  2. В раскрывающемся списке "Binding Source" диалогового окна "Binding" выберите "masterTable".
  3. В раскрывающемся списке "Binding Expression" выберите "selectedElement > spoiler".
  4. Для закрытия диалогового окна "Bind" нажмите кнопку "OK".
  5. Щелкните правой кнопкой мыши флажок "Sun Roof" в форме и выберите "Bind > selected".
  6. В раскрывающемся списке "Binding Source" диалогового окна "Binding" выберите "masterTable".
  7. В раскрывающемся списке "Binding Expression" выберите "selectedRow > sunRoof".
  8. Нажмите кнопку "OK".

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

Для проверки функционирования флажков и ползунков:

  1. Откройте окно "Services".
  2. Щелкнув правой кнопкой мыши "Databases > jdbc:derby;//localhost:1527/car_database" и нажав "Connect", убедитесь, что у среды IDE есть подключение к базе данных.
  3. Щелкните "Databases > jdbc:derby;//localhost:1527/car_database > Tables > node" правой кнопкой мыши и выберите "View Data".
  4. Просмотрите значения SUN_ROOF, SPOILER, TIRE_SIZE и MODERNNESS для первой записи.
  5. Для запуска приложения выберите "Run > Run Main Project".

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

    Диалоговое окно "Bind" с привязкой поля "Modernness" ко второму ползунку.
  6. В работающем приложении выберите первую запись.
  7. Переместите ползунки и измените состояние флажков.
  8. Для сохранения значения в базе данных нажмите кнопку "Save".
  9. В окне "Services" снова воспользуйтесь командой "View Data".

    В базе данных должны отобразиться измененные значения.

Настройка пользовательского элемента управления

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

Чтобы сделать элемент управления "CarPreview" дос тупными для проекта "CarsApp", выполните следующие действия:

  1. Загрузите файл CarPreview.zip, если это не было выполнено ранее.
  2. При помощи стандартного средства для работы с файлами ZIP извлеките файлы из архива ZIP.
  3. Выберите "File > Open Project", перейдите к содержимому, извлеченному из файла ZIP, и выберите проект "CarPreview".
  4. Нажмите кнопку "Open Project".

    Проект откроется в среде IDE.

  5. Щелкните правой кнопкой мыши узел "CarPreview" и выберите "Clean and Build".

    Выполнится компиляция файлов в проекте, после чего класс "CarPreview" можно будет использовать в качестве компонента, добавляемого в формы посредством перетаскивания.

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

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

  1. В окне "Projects" выберите "Car Preview > Source Packages > carpreview > nodes".
  2. Перетащите класс "CarPreview.java" в форму. Для правильного размещения изображения непосредственно под меню поместите его в таблицу, выровняйте по левому краю относительно других элементов управления и зафиксируйте по нижней линии строки меню, как показано на рисунке ниже.

    Пример добавления изображения автомобиля к форме

  3. Измените размеры рисунка по горизонтали в соответствии с размером всей формы.
  4. Установите привязку всех свойств элемента "CarPreview" к соответствующим атрибутам "selectedElement" в masterTable аналогично привязке ползунков и флажков к элементам в элементе masterTable. В таблице свойств используйте меню "Bind" или вкладку "Binding".
  5. Снова запустите приложение CarApp.

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

На нижеприведенном рисунке показано готовое работающее приложение.

Готовое работающее приложение с изображением автомобиля Toyota

Сборка и развертывание приложения

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

Сборка приложения

Основная команда сборки в среде IDE – команда "Clean and Build". Командой "Clean and Build" удаляются предварительно скомпилированные классы и другие результаты предыдущей сборки, после чего выполняется сборка проекта заново.

Примечание: Также существует команда "Build", использование которой не приводит к удалению результатов предыдущей сборки, однако она отключена по умолчанию. Для получения дополнительных сведений см. раздел "Функция Compile on Save" в руководстве Создание, импорт и настройка проектов Java.

Для сборки приложения выполните следующие действия.

  • Выберите "Run > Clean and Build Main Project" (Shift-F11).

Результат выполнения сценария сборки Ant должен появиться в окне "Output". Если окно "Output" не отображается, его можно открыть вручную путем выбора "Window > Output > Output".

При очистке и сборке проекта выполняется следующее:

  • Удаляются ("очищаются") папки результатов, созданные при предыдущей сборке. (В большинстве случаев это папки build и dist.)
  • К папке проекта (далее именуемой "папка PROJECT_HOME") добавляются папки build и dist.
  • Все исходные файлы компилируются в файлы .class, которые помещаются в папку PROJECT_HOME/build.
  • В папке PROJECT_HOME/dist создается архив JAR, содержащий проект.
  • Если для проекта указаны какие-либо библиотеки (кроме JDK), в папке dist создается папка lib. Библиотеки копируются в папку dist/lib.
  • Обновляется файл манифеста в архиве JAR – в него включаются значения, обозначающие главный класс, и все библиотеки, которые расположены по пути к классам проекта.

Запуск приложения вне среды IDE

Для запуска приложения вне среды IDE выполните следующие действия:

  1. Запустите базу данных Java DB вне среды IDE. См. http://db.apache.org/derby/docs/dev/getstart/.

    Примечание: Java DB можно запустить из среды IDE, однако при выходе из среды IDE сервер будет остановлен.

  2. При помощи обозревателя или диспетчера файлов перейдите в каталог CarsApp/dist.
  3. Дважды щелкните файл CarsApp.jar.

Через несколько секунд приложение запустится.

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

Можно также запустить приложение из командной строки.

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

  1. Запустите базу данных Java DB извне среды IDE.
  2. Вызовите командную строку или окно терминала.
  3. В командной строке перейлите в каталог CarsApp/dist.
  4. В командной строке введите следующую команду:
    java -jar CarsApp.jar

Распространение приложения для других пользователей

После проверки корректности работы приложения вне среды IDE можно подготовить приложение к распространению.

Для подготовки распространяемого пакета приложения выполните следующие действия.

  1. В системе создайте файл ZIP, включающий архив JAR приложения (CarsApp.jar) и сопутствующую библиотеку lib, которая содержит другие архивы JAR, используемые приложением.
  2. Отправьте этот файл пользователям, которые будут работать с приложением. Предоставьте указания по распаковке файла ZIP, определяющие необходимость размещения файла CarsApp.jar и папки lib в одной папке.
  3. Также предложите пользователям выполнить действия в разделе Запуск приложения вне среды IDE.

Что дальше?

В этом руководстве приведены лишь общие сведения о поддержке платформы приложений Swing и привязке компонентов в среде IDE.

Для получения дополнительных сведений об использовании библиотеки Hibernate в качестве слоя сохранения состояния приложения Swing см. Использование библиотеки Hibernate в приложении на Java на базе Swing.

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

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


Дополнительные материалы