Статьи

Java DB Embedded Mode

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> ij
ij> 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. Несколько веб-клиентов получают доступ к данным базы данных через приложение.

image2

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.
     */
@Override
public 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