Работа с базами данных в Java: PostgreSQL и MongoDB для начинающих

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Работа с базами данных в Java: PostgreSQL и MongoDB для начинающих

В современной разработке на Java умение работать с базами данных (БД) является одним из ключевых навыков. Независимо от того, создаёте ли вы веб-приложение, мобильный сервис или корпоративную систему, вам потребуется хранить, извлекать и обрабатывать данные. В этой статье мы рассмотрим две популярные системы управления базами данных (СУБД): реляционную PostgreSQL и документо-ориентированную MongoDB. Вы узнаете, как подключиться к ним из Java-приложения, выполнять базовые операции и поймёте, в каких случаях выбирать ту или иную технологию. Материал ориентирован на начинающих разработчиков, поэтому все примеры кода максимально просты и снабжены комментариями.

1. Основы работы с PostgreSQL в Java

PostgreSQL — это мощная объектно-реляционная СУБД с открытым исходным кодом. Для взаимодействия с ней из Java используется драйвер JDBC (Java Database Connectivity). Рассмотрим пошаговый процесс подключения и выполнения запросов.

1.1. Подключение драйвера и настройка

Первым делом необходимо добавить зависимость в ваш проект. Если вы используете Maven, добавьте в pom.xml следующий блок:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.7.1</version>
</dependency>

Для Gradle добавьте строку в build.gradle:

implementation 'org.postgresql:postgresql:42.7.1'

1.2. Создание таблицы и вставка данных

Предположим, у нас есть база данных testdb с пользователем user и паролем pass. Создадим простую таблицу users и добавим несколько записей.

import java.sql.*;

public class PostgresExample {
    public static void main(String[] args) {
        String url = "jdbc:postgresql://localhost:5432/testdb";
        String user = "user";
        String password = "pass";

        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement()) {

            // Создание таблицы
            String createTableSQL = "CREATE TABLE IF NOT EXISTS users (" +
                                    "id SERIAL PRIMARY KEY, " +
                                    "name VARCHAR(100) NOT NULL, " +
                                    "email VARCHAR(100) UNIQUE)";
            stmt.executeUpdate(createTableSQL);
            System.out.println("Таблица создана или уже существует.");

            // Вставка данных
            String insertSQL = "INSERT INTO users (name, email) VALUES " +
                               "('Иван Петров', 'ivan@example.com'), " +
                               "('Мария Смирнова', 'maria@example.com')";
            int rowsInserted = stmt.executeUpdate(insertSQL);
            System.out.println("Добавлено строк: " + rowsInserted);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

1.3. Чтение данных с помощью PreparedStatement

Для безопасной работы с пользовательским вводом используйте PreparedStatement. Это предотвращает SQL-инъекции.

String selectSQL = "SELECT * FROM users WHERE name LIKE ?";
try (PreparedStatement pstmt = conn.prepareStatement(selectSQL)) {
    pstmt.setString(1, "%Иван%");
    ResultSet rs = pstmt.executeQuery();

    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        String email = rs.getString("email");
        System.out.println("ID: " + id + ", Имя: " + name + ", Email: " + email);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

Как видите, работа с PostgreSQL в Java стандартна и хорошо документирована. Главное — не забывать закрывать ресурсы (лучше всего использовать try-with-resources).

2. Начало работы с MongoDB в Java

MongoDB — это NoSQL база данных, хранящая данные в виде JSON-подобных документов (BSON). Для Java существует официальный драйвер MongoDB Java Driver.

2.1. Подключение драйвера MongoDB

Добавьте в Maven:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.11.1</version>
</dependency>

2.2. Подключение к серверу и работа с коллекциями

В MongoDB аналогом таблицы является коллекция, а записью — документ. Рассмотрим пример подключения и вставки данных.

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

public class MongoExample {
    public static void main(String[] args) {
        // Подключение к локальному серверу MongoDB (порт по умолчанию 27017)
        try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {

            // Получаем базу данных (если её нет, она создастся автоматически)
            MongoDatabase database = mongoClient.getDatabase("testdb");

            // Получаем коллекцию (аналог таблицы)
            MongoCollection<Document> collection = database.getCollection("users");

            // Создаём документ
            Document user = new Document("name", "Анна Соколова")
                    .append("email", "anna@example.com")
                    .append("age", 28);

            // Вставляем один документ
            collection.insertOne(user);
            System.out.println("Документ вставлен. ID: " + user.getObjectId("_id"));

            // Вставка нескольких документов
            Document user2 = new Document("name", "Дмитрий Иванов")
                    .append("email", "dmitry@example.com")
                    .append("age", 35);
            collection.insertOne(user2);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2.3. Поиск и фильтрация документов

Для чтения данных используйте объекты Filters из библиотеки com.mongodb.client.model.

import com.mongodb.client.model.Filters;

// Найти всех пользователей старше 30 лет
FindIterable<Document> docs = collection.find(Filters.gt("age", 30));
for (Document doc : docs) {
    System.out.println(doc.toJson());
}

// Найти одного пользователя по email
Document found = collection.find(Filters.eq("email", "anna@example.com")).first();
if (found != null) {
    System.out.println("Найден: " + found.getString("name"));
}

Обратите внимание: в MongoDB нет схемы данных, что да

Блоги

Рекомендаций по книгам