Содержание

Слайд 2

JDBC (Java DataBase Connectivity) - набор библиотек для работы c базами

JDBC (Java DataBase Connectivity) - набор библиотек для работы c базами

данных.
Apache Derby - реляционная СУБД, написана на Java.
Страница с релизами: http://db.apache.org/derby/releases/
Eclipse позволяет запускать и работать с Derby с помощью плагинов: derby_core_plugin и derby_ui_doc_plugin
Адреса для загрузки плагинов (последний релиз):
http://archive.apache.org/dist/db/derby/db-derby-10.8.2.2/derby_core_plugin_10.8.2.zip
http://archive.apache.org/dist/db/derby/db-derby-10.8.2.2/derby_ui_doc_plugin_1.1.3.zip
Скачиваем. Распаковываем.

Kolesnikov D.O. SED KNURE

Слайд 3

Kolesnikov D.O. SED KNURE

Kolesnikov D.O. SED KNURE

Слайд 4

После перегрузки, плагин установлен и его функциональность доступна через пункт контекстного меню. Kolesnikov D.O. SED KNURE

После перегрузки, плагин установлен и его функциональность доступна через пункт контекстного

меню.

Kolesnikov D.O. SED KNURE

Слайд 5

Применение плагина документировано. Kolesnikov D.O. SED KNURE

Применение плагина документировано.

Kolesnikov D.O. SED KNURE

Слайд 6

Для того чтобы добавить возможность работать с Derby из вашего проекта

Для того чтобы добавить возможность работать с Derby из вашего проекта

нужно на проекте нажать ПКМ (правая клавиша мыши) и выбрать пункт меню
Add Apache Derby nature.
После этого будут доступны новые пункты в меню
Для запуска СУБД нужно выбрать
Start Derby Network Server

Kolesnikov D.O. SED KNURE

Слайд 7

Создаем в проекте каталог sql и в нем файл dbcreate.sql В

Создаем в проекте каталог sql и в нем файл dbcreate.sql
В базе

будет две таблицы: roles (роли)
В ней три записи, как указанно
и users (пользователи)
в таблице users записи заранее не предопределены (см. далее).

Kolesnikov D.O. SED KNURE

Слайд 8

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

Для того, чтобы создать пустую базу данных необходимо выполнить следующую команду:
connect

'jdbc:derby://localhost:1527/ts;create=true;user=ts;password=ts';
connect
команда соединения с СУБД Derby
'jdbc:derby://localhost:1527/ts;create=true;user=ts;password=ts'
строка соединения
jdbc:derby://
префикс
localhost:1527
адрес, где запущена СУБД и порт, на котором она принимает соединения

Kolesnikov D.O. SED KNURE

Слайд 9

connect 'jdbc:derby://localhost:1527/ts;create=true;user=ts;password=ts'; ts имя базы данных create=true;user=ts;password=ts параметры соединения: create=true при

connect 'jdbc:derby://localhost:1527/ts;create=true;user=ts;password=ts';
ts
имя базы данных
create=true;user=ts;password=ts
параметры соединения:
create=true
при соединении создать новую базу данных, если

она отсутствует
user=ts;password=ts
логин и пароль пользователя, который имеет право работать в последствие с указанной базой данных

Kolesnikov D.O. SED KNURE

Слайд 10

В файле dbcreate.sql записываем: сохраняем файл. Далее ПКМ на файле и

В файле dbcreate.sql записываем:
сохраняем файл. Далее ПКМ на файле и выбираем
(сама

СУБД должна быть, разумеется, запущена)
В результате выполнения скрипта будет создана пустая база данных ts. Вывод в консоль при выполнении скрипта:

Kolesnikov D.O. SED KNURE

Слайд 11

Для того, чтобы создать таблицу roles в базе данных ts достаточно

Для того, чтобы создать таблицу roles в базе данных ts достаточно

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

Kolesnikov D.O. SED KNURE

Слайд 12

Таблица roles состоит из двух полей: id и name. Поле id

Таблица roles состоит из двух полей: id и name.
Поле id объявлено

так:
INTЕGER (или INT) – это тип данных (целое число);
NOT NULL – означает, что для любой строки в таблице поле id не должно быть пустым, т.е. туда должно быть что то записано;
GENERATED ALWAYS AS IDENTITY - означает, что поле будет автоматически инкрементировано самой СУБД при добавлении новой строки, начиная с нуля и с шагом 1; при этом "вручную" вставить значение в это поле невозможно (подробно тут: http://db.apache.org/derby/docs/dev/ref/rrefsqlj37836.html);

Kolesnikov D.O. SED KNURE

Слайд 13

PRIMARY KEY - означает, что данное поле является первичным ключом, по

PRIMARY KEY - означает, что данное поле является первичным ключом, по

значению поля id может быть однозначно идентифицирована любая строка в таблице.
Поле name объявлено так:
VARCHAR(20) – строковый тип данных (не более 20 символов);
NOT NULL – значение поля не должно быть пустым;
UNIQUE – значение поля должно быть уникальным, т.е. не допускается существование двух разных строк с одинаковым значением этого поля.

Kolesnikov D.O. SED KNURE

Слайд 14

Модифицируем исходный скрипт: Команда DROP TABLE удаляет указанную таблицу (нужна, чтобы

Модифицируем исходный скрипт:
Команда DROP TABLE удаляет указанную таблицу (нужна, чтобы не

было ошибки создания уже существующей таблицы на следующем шаге);
Команда INSERT вставляет данные в таблицу.

Kolesnikov D.O. SED KNURE

Слайд 15

Чтобы проверить правильность внесения данных в таблицу roles, достаточно выполнить скрипт

Чтобы проверить правильность внесения данных в таблицу roles, достаточно выполнить скрипт

(select.sql):
Результат выполнения:

Kolesnikov D.O. SED KNURE

Слайд 16

СУБД Derby запущена, в базе данных ts одна таблица roles. Для

СУБД Derby запущена, в базе данных ts одна таблица roles. Для

того, чтобы иметь возможность обмениваться информацией с БД, можно использовать JDBC.
Вначале создадим java-bean класс Role (в отдельном пакете entity), который будет соответствовать одной записи в таблице roles:

Kolesnikov D.O. SED KNURE

Слайд 17

Создадим абстрактный класс DAOFactory Kolesnikov D.O. SED KNURE

Создадим абстрактный класс DAOFactory

Kolesnikov D.O. SED KNURE

Слайд 18

Класс DAOFactory предназначен для получения соединения с базой данных, с какой

Класс DAOFactory предназначен для получения соединения с базой данных, с какой

именно базой данных будет соединение будет определено значениями констант из класса Constants:
В реальном проекте эти значения будут взяты из внешнего конфигурационного файла.

Kolesnikov D.O. SED KNURE

Слайд 19

Класс DAOFactory: Данная строка регистрирует драйвер СУБД в JVM. В нашем

Класс DAOFactory:
Данная строка регистрирует драйвер СУБД в JVM. В нашем случае

это драйвер
org.apache.derby.jdbc.ClientDriver
Для того, чтобы приложение могло работать с ним, нужно к проекту подключить библиотеку derbyclient.jar.

Kolesnikov D.O. SED KNURE

Слайд 20

Файл derbyclient.jar находится в поставке СУБД Derby. Можно создать каталог lib

Файл derbyclient.jar находится в поставке СУБД Derby.
Можно создать каталог lib внутри

проекта, скопировать туда этот файл и подключить через свойства проекта:

Kolesnikov D.O. SED KNURE

Слайд 21

Класс DAOFactory: Данные строки создают экземпляр класса по его FCN –

Класс DAOFactory:
Данные строки создают экземпляр класса по его FCN – (full

qualified name), т.е. полному имени.
Метод getConnection
Возвращает объект Connection – соединение с базой данных.

Kolesnikov D.O. SED KNURE

Слайд 22

Класс DAOFactory работает с интерфейсами, которые не зависят от конкретной СУБД.

Класс DAOFactory работает с интерфейсами, которые не зависят от конкретной СУБД.
Методы


представляют собой логику работы с базой данных.

Kolesnikov D.O. SED KNURE

Слайд 23

Реализация DAO для СУБД Derby находится в пакете ua.kharkov.knure.testDerby.db.dao.derby Каждой поддерживаемой

Реализация DAO для СУБД Derby находится в пакете
ua.kharkov.knure.testDerby.db.dao.derby
Каждой поддерживаемой СУБД будет

соответствовать набор классов в пакете
ua.kharkov.knure.testDerby.db.dao.ИМЯ_БАЗЫ_ДАННЫХ

Kolesnikov D.O. SED KNURE

Слайд 24

Класс DerbyDAOFactory, представляет собой реализацию DAOFactory для СУБД Derby: Реализация логики

Класс DerbyDAOFactory, представляет собой реализацию DAOFactory для СУБД Derby:
Реализация логики находится

в классе DerbyRoleDAO:

Kolesnikov D.O. SED KNURE

Слайд 25

Метод findRoleById: Метод findAllRoles: Kolesnikov D.O. SED KNURE

Метод findRoleById:
Метод
findAllRoles:

Kolesnikov D.O. SED KNURE