Как создать и начать работу с базой данных Embedded Apache Derby в проекте Dropwizard (внешний интерфейс Angular 7) - PullRequest
0 голосов
/ 24 февраля 2019

Я читаю документацию по Derby и следую всем инструкциям.Я успешно установил его (распаковал его на мою Linux-машину и установил путь DERBY_HOME).У меня есть полный проект REST API с интерфейсом Angular 7 и бэкэндом Dropwizard.Я жестко закодировал некоторые данные в бэкэнде и создал все необходимые мне методы HTTP API (GET, POST, PATCH, DELETE).

Приложение полностью функционально, но теперь мне нужно внедрить в него встроенную версию Derby.У меня 0 опыта работы с такими базами данных, и поскольку Dropwizard уже доставил мне достаточно хлопот, я не могу понять, с чего начать.

Могу ли я создать новый класс и начать там, как создавать эти файлы SQL икак хранить данные?Я не могу найти конкретного ответа на подобные вопросы, если есть подробные объяснения и примеры, которые уже есть, пожалуйста, не стесняйтесь предоставить мне ресурсы.Я знаю, что это нубский вопрос, но я едва узнал, как работает HTTP (основы), и мне удалось полностью создать функциональный REST с помощью Angular и Dropwizard.

1 Ответ

0 голосов
/ 24 февраля 2019

Рассмотрите встроенную базу данных как полноценную базу данных, которая вместо того, чтобы находиться в другой среде, и, возможно, требует подключения к сети, упакована вместе с вашим приложением и работает в той же JVM.Те же механизмы применяются к двум.

Встроенный драйвер Derby находится внутри файла derby.jar, поэтому его необходимо указать в classpath вашего приложения.Он должен быть расположен в %DERBY_INSTALL%\lib\, где %DERBY_INSTALL% - каталог установки.Вы можете видеть на изображении, где оно содержится.

enter image description here

Из Oracle

ЛюбойДрайверы JDBC 4.0, найденные в вашем пути к классам, загружаются автоматически.(Однако вы должны вручную загрузить все драйверы до JDBC 4.0 с помощью метода Class.forName.)

Это означает, что если драйвер Derby является драйвером JDBC 4.0, у вас нетчтобы сделать что-то еще, кроме получения соединения через DriverManager.
Если это не драйвер JDBC 4.0, вам придется создать экземпляр драйвера с помощью

Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();

Очевидно, вам понадобится эта частькода выше.
Теперь просто возьмите объект Connection.

DriverManager.getConnection("jdbc:derby:dbName;create=true");

С этого момента вы можете создавать Statement (s), как вам нравится.Это означает, что вы можете создавать таблицы, вставлять строки, обновлять строки, удалять строки и т. Д.

Чтобы корректно завершить работу встроенной базы данных Derby, вам необходимо использовать

DriverManager.getConnection("jdbc:derby:dbName;shutdown=true"); // see the same database name "dbName"

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


Вы можете создать служебный класс для хранения EmbeddedDataSource ( docs ), который будет обеспечивать соединения вокруг вашего приложения.

public final class EmbeddedDerby {
   private static final DataSource DATA_SOURCE;

   static {
      // Initialize DATA_SOURCE with EmbeddedDataSource
   }

   ...

   public static Connection getConnection() {
     return DATA_SOURCE.getConnection();
   }
}
...