Ответ
Embedded (встраиваемая) база данных — это СУБД, которая работает как библиотека внутри процесса приложения, а не как отдельный серверный процесс. Она хранит данные в локальных файлах или в памяти (in-memory).
Типичные представители в Java-экосистеме: H2, HSQLDB (HyperSQL), Apache Derby, SQLite.
Пример подключения и использования H2 в режиме in-memory:
import java.sql.*;
public class EmbeddedDbExample {
public static void main(String[] args) throws SQLException {
// JDBC URL для in-memory базы H2. База создается при подключении и уничтожается при закрытии.
String url = "jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1";
try (Connection conn = DriverManager.getConnection(url, "sa", "");
Statement stmt = conn.createStatement()) {
// Создание таблицы и работа с данными
stmt.execute("CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50))");
stmt.execute("INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob')");
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
System.out.println(rs.getInt("id") + ": " + rs.getString("name"));
}
} // Соединение закроется автоматически, in-memory база будет удалена.
}
}
Преимущества:
- Простота развертывания: Не требует установки и администрирования отдельного сервера БД.
- Высокая скорость: Отсутствуют сетевые задержки (особенно в in-memory режиме).
- Идеально для тестирования: Позволяет создавать изолированное, повторяемое окружение для юнит- и интеграционных тестов.
- Подходит для встраиваемых устройств и desktop-приложений.
Недостатки и ограничения:
- Ограниченная масштабируемость и производительность в высоконагруженных многопользовательских сценариях.
- Нет сетевого доступа по умолчанию (хотя некоторые, как H2, имеют и серверный режим).
- Ограниченный набор функций по сравнению с промышленными СУБД (PostgreSQL, Oracle).
Основные сценарии использования:
- Разработка и тестирование: Быстрый запуск без зависимостей.
- Демо- и прототип-приложения.
- Встроенное ПО (IoT, устройства).