Java DB — это система управления реляционными базами данных, основанная на языке программирования Java и SQL. Это релиз Oracle проекта Apby Software Foundation с открытым исходным кодом Derby. Java DB включена в Java SE 7 SDK.
Java DB имеет два варианта развертывания: встроенный и сетевой сервер .
Этот пост о встроенном развертывании или режиме.
1. Встроенный
Во встроенном режиме:
- Доступ к базе данных осуществляется только из одного приложения.
- Нет сетевого подключения между приложением и базой данных.
- Приложение и база данных работают в одной JVM (виртуальная машина Java).
Доступ к базе данных осуществляется из приложения Java с использованием JDBC (Java Database Connectivity). Как правило, база данных запускается и останавливается приложением, которое обращается к ней. И администрирование базы данных не требуется.
1.1. Запуск Java DB
Запустите Java DB из приложения. Сначала загрузите драйвер базы данных JDBC. Затем подключитесь к базе данных с помощью URL-адреса подключения.
- Драйвер включен в базу данных Java: org.apache.derby.jdbc.EmbeddedDriver
- Формат URL соединения: jdbc: derby: databaseName; URLAttributes;
- Пример URL-адреса подключения: jdbc: derby: SampleDB; create = true; где имя базы данных — SampleDB, а ‘create = true’ — пара имя / значение атрибута.
Ниже приведен пример метода Java, который запускает базу данных с использованием JDBC:
|
01
02
03
04
05
06
07
08
09
10
11
12
|
/* * The method creates a Connection object. Loads the embedded driver, * starts and connects to the database using the connection URL. */public static Connection createDatabaseConnection() throws SQLException, ClassNotFoundException { String driver = "org.apache.derby.jdbc.EmbeddedDriver"; Class.forName(driver); String url = "jdbc:derby:sampleDB"; Connection c = DriverManager.getConnection(url); return c;} |
Объект Connection, созданный описанным выше способом, используется для доступа к объектам базы данных и данным с использованием SQL. sampleDB — это имя базы данных.
ПРИМЕЧАНИЕ. Библиотека derby.jar должна находиться в пути к классу приложения, использующего Java DB Embedded. Эта библиотека включает в себя программу драйвера. Это входит в состав БД Java.
1.2. Интерактивный доступ к базе данных Java DB с помощью ‘ij’
ij — инструмент командной строки, включенный в Java DB. ij — это инструмент JDBC, используемый для выполнения интерактивных запросов к базе данных Java DB. Это находится в каталоге \ bin установки Java DB.
Запустите ij, создайте базу данных и выполните команды SQL для создания и доступа к данным:
|
1
2
3
|
os prompt> ijij> CONNECT 'jdbc:derby:testDB;create=true';ij> Enter SQL commands here… |
Это создает базу данных с именем testDB в текущем каталоге и подключается к ней. База данных Java DB хранится в файлах в каталоге с тем же именем, что и имя базы данных.
2. Пример использования
Примером использования является настольное приложение на основе Java Swing, которое использует встроенную базу данных. При первом запуске приложения создается база данных и ее объекты. Впоследствии приложение создает или обращается к данным в базе данных. Приложение также имеет функцию резервного копирования базы данных в режиме онлайн (т. Е. Создание резервной копии при открытой базе данных) и восстановление из функции резервного копирования базы данных . База данных закрыта с приложением.
3. Подключитесь к Java DB Embedded от нескольких клиентов
Доступ к базе данных Java в режиме Embedded возможен с нескольких клиентов. Например, приложение сервлета Java, развернутое на веб-сервере и подключающееся к базе данных. База данных Java DB настроена как ресурс типа DataSource на веб-сервере. Приложение Servlet запускает базу данных и создает объекты Connection. Объекты Connection создаются с использованием объекта DataSource, а не DriverManager. Несколько веб-клиентов получают доступ к данным базы данных через приложение.
3.1. Пример
- Настройка ресурса источника данных на веб-сервере
- Доступ к базе данных из сервлета (используя настроенный источник данных)
Конфигурация для веб-сервера Apache Tomcat 6. В следующих примерах кода используются Java-сервлет (Java EE), JNDI (интерфейс именования и каталогов Java) и JDBC API.
3.1.1. Настройка ресурса источника данных на веб-сервере
Это называется конфигурацией контекста. Это определяет имя JNDI источника данных JDBC как ресурс для базы данных Java DB, используемой в веб-приложении (для поиска JNDI). Также указываются параметры ресурса.
Следующая запись добавляется в файл «/META-INF/context.xml». Каталог META-INF должен находиться в корневом каталоге файла WAR развертывания веб-приложения.
|
01
02
03
04
05
06
07
08
09
10
|
<Context> <Resource name="jdbc/testDB" auth="Container" type="javax.sql.DataSource" username="" password="" driverClassName="org.apache.derby.jdbc.EmbeddedDriver" url="jdbc:derby:testDB"/></Context> |
- name: имя JNDI ресурса источника данных.
- url: указывает URL-адрес соединения с базой данных JDBC в формате jdbc: derby: databaseName; URLAttributes ;. И testDB — это имя базы данных Java DB для подключения.
Обратите внимание, что приложение обращается к встроенной базе данных из системного каталога Derby. По умолчанию текущий каталог (системное свойство JVM user.dir ) является системным каталогом.
Для Java DB можно указать системный каталог Derby (необязательно), установив системное свойство JVM derby.system.home . Это устанавливается при использовании команды «java» из командной строки операционной системы (например, java -Dderby.system.home = D: \ mydatabases MyApplication ) или из программы Java (с использованием setProperty () класса java.lang.System. ,
ПРИМЕЧАНИЕ . Встроенный драйвер базы данных (derby.jar) должен находиться в каталоге «CATALINA_HOME \ lib». CATALINA_HOME — это установочный каталог Tomcat.
3.1.2. Доступ к базе данных из сервлета
В следующем коде Java показан класс сервлета, обращающийся к базе данных Java DB с использованием настроенного ресурса DataSource. Код предполагает, что база данных уже создана (с использованием другого приложения или в интерактивном режиме с использованием ij).
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
public class TestServlet extends HttpServlet {private Connection conn;/* * Method executes when the servlet is created. * Accesses the DataSource object and creates the Connection object. */@Overridepublic void init() throws ServletException { InitialContext cxt = null; DataSource ds = null; try { cxt = new InitialContext(); ds = (DataSource)cxt.lookup("java:/comp/env/jdbc/testDB"); } catch (NamingException ex) { throw new ServletException("naming context error", ex); } try { conn = ds.getConnection(); } catch (SQLException ex) { throw new ServletException("connection error", ex); }} // init()/* * Method to handle a Http Get request. * The Connection object created in init() is used to access the * database data using JDBC API. */ @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ... Statement stmnt = conn.createStatement(); ResultSet rs = stmnt.executeQuery("SELECT * FROM test_table"); ... }} // TestServlet |
4. Сетевой сервер (он же сервер)
В этом режиме доступ к БД Java осуществляется с нескольких клиентов по сети — конфигурация клиент-сервер. База данных и приложения работают в разных JVM. Доступ к базе данных на сервере осуществляется из приложения Java с использованием JDBC.
Ниже приведен пример использования Сервера.
4.1. Запустите сервер
Запустите и остановите сервер из командной строки Windows, используя предоставленные пакетные программы (они находятся в каталоге \ bin установки Java DB): startNetworkServer.bat и stopNetworkServer.bat .
4.2. Доступ к Java DB из клиентского приложения
Загрузите драйвер и подключитесь к базе данных с помощью URL-адреса подключения.
- Драйвер: org.apache.derby.jdbc.ClientDriver
- Формат URL соединения: jdbc: derby: // сервер: порт / имя_базы_данных; URLAttributes;
- server — это имя хоста (или IP-адрес), а port — номер порта (по умолчанию 1527), где сервер прослушивает клиентские запросы.
Ниже приведен пример метода Java, который запускает базу данных с использованием JDBC:
|
01
02
03
04
05
06
07
08
09
10
11
12
|
/* * The method creates a Connection object. Loads the client driver, * starts and connects to the database using the connection URL. */public static Connection createDatabaseConnection() throws SQLException, ClassNotFoundException { String driver = "org.apache.derby.jdbc.ClientDriver"; Class.forName(driver); String url = "jdbc:derby://localhost:1527/sampleDB"; Connection c = DriverManager.getConnection(url); return c;} |
Объект Connection, созданный описанным выше способом, используется для доступа к объектам базы данных и данным с использованием SQL. sampleDB — это имя базы данных.
ПРИМЕЧАНИЕ. Библиотека derbyclient.jar должна находиться в пути к классу клиентского приложения для запуска и доступа к базе данных Java DB. Эта библиотека включает в себя программу драйвера. Это входит в состав БД Java.
5. Ссылки
- Apache Derby> Документация (10.8 Руководства): http://db.apache.org/derby/manuals/index.html
- Java базы данных Oracle: http://www.oracle.com/technetwork/java/javadb/overview/index.html
- Резервное копирование и восстановление записей в блогах Java этого автора: http://www.javaquizplayer.com/blog.html
- Настольное приложение на основе Java Swing, разработанное и развернутое (и использующее Java DB Embedded) этим автором: http://www.scribeonotes.com

