Демонстрационный проект Hibernate ORM & H2 Database (Portable)
Портативный, автономный Java-проект, демонстрирующий базовые CRUD-операции (создание, чтение, обновление, удаление) с использованием фреймворка Hibernate 6 и встроенной файловой СУБД H2.
Проект полностью автономен, инкапсулирован внутри одной директории и настроен для бесперебойной работы с USB-флешки на любом ПК с Windows 10 в условиях строгого отсутствия интернета (офлайн-режим).
📂 Архитектура и структура папок
Проект жестко привязан к следующей переносимой структуре каталогов на диске:
C:\Java\
├── VSCode-Portable\ # Портативное окружение разработки
│ ├── jdk-25.0.2\ # Среда выполнения Java 25
│ ├── settings.xml # Глобальная конфигурация Maven
│ └── maven_repository\ # Локальный офлайн-репозиторий .jar библиотек
└── prog\
└── hibernate\ # Корневая папка проекта
├── .vscode\
│ └── settings.json # Офлайн-настройки интеграции VS Code c JDK
├── src\main\java\
│ └── Main.java # Единственный Java-класс (Сущность + Логика CRUD)
├── db\ # Директория с физическими файлами базы данных H2
│ └── demo.mv.db # Постоянное хранилище таблиц СУБД
├── pom.xml # Конфигурация сборщика Maven с комментариями
└── run.bat # Скрипт автоматической компиляции и запуска в 1 клик
🛠 ️ Технологический стек и синхронизация
Проект успешно решает скрытые конфликты безопасности современных версий Java и транзитивных зависимостей:
- Java 25 (JDK) — целевая среда выполнения.
- Hibernate Core 6.6.8.Final — ORM-движок автоматического связывания объектов и таблиц.
- Hibernate Commons Annotations — модуль разбора JPA-метаданных (интегрирован для версии 6.6.8+).
- H2 Database 2.3.232 — встроенная файловая СУБД (работает без установки серверов).
- JBoss Logging 3.5.0.Final — изолированная версия логгера, полностью совместимая с системой модульной безопасности JDK 25.
- ANTLR 4.13 — математический парсер для безошибочной трансляции объектных HQL-запросов в нативный SQL СУБД H2.
🚀 Варианты запуска проекта
Вариант 1. Через VS Code (По кнопке Play)
- Откройте папку
C:\Java\prog\hibernate\в VS Code. - Файл
.vscode/settings.jsonавтоматически заблокирует фоновую сетевую активность ("java.autobuild.enabled": false) и переведет среду в офлайн. - Откройте файл
Main.javaи нажмите стандартную кнопку Play (треугольник) в верхнем правом углу.
Вариант 2. Автономный запуск через консоль Windows
- Закройте VS Code и перейдите в корень проекта.
- Дважды кликните по файлу
run.bat. - Скрипт в автоматическом режиме:
- Выполнит офлайн-компиляцию через Maven (
mvn clean compile -o). - Через поисковые циклы
for /rсоберет динамический Classpath, исключая конфликты старых дубликатов библиотек. - Нативно запустит приложение напрямую через
java.exe.
- Выполнит офлайн-компиляцию через Maven (
🔎 Демонстрируемый CRUD-функционал (Суть ORM)
Вся логика сосредоточена в методе main класса Main.java и разделена на 4 изолированные сессии (транзакции):
-
CREATE (Сохранение): Создание Java-объектов
Userв оперативной памяти и их запись в БД черезsession.persist(). На основе JPA-аннотаций Hibernate сам генерирует SQL-командыCREATE TABLEиINSERT INTO. -
UPDATE (Обновление): Демонстрация механизма Dirty Checking. Изменение имени пользователя происходит через обычный Java-сеттер
setName(). При коммите транзакции Hibernate автоматически формирует и отправляет SQL-запросUPDATE. -
READ LIST (Чтение HQL): Выполнение объектного поискового запроса на языке HQL (
from User where name like :searchName). Запрос транслируется в безопасныйSELECTс защитой от SQL-инъекций. -
DELETE (Удаление): Поиск записи по динамическому идентификатору (полученному из автоинкремента базы данных на шаге 1) и её физическое удаление методом
session.remove().
💾 Физическая проверка данных в СУБД H2
После выполнения CRUD-операций программа встает на паузу, удерживая соединение. Вы можете лично проверить, как данные записались в файл db/demo.mv.db:
- Не закрывая консоль программы, откройте любой браузер и перейдите по адресу:
http://localhost:8082. - В окне H2 Console настройте следующие параметры подключения:
-
JDBC URL:
jdbc:h2:file:C:/Java/prog\hibernate/db/demo;DB_CLOSE_DELAY=-1 -
User Name:
sa - Password: (полностью очистить поле, пароль пустой)
-
JDBC URL:
- Нажмите Connect.
- Выберите таблицу
USERSи нажмите кнопку Run. На экране отобразится актуальная таблица со всеми сохраненными пользователями. - Перед закрытием окна нажмите кнопку Disconnect в левом верхнем углу СУБД, вернитесь в консоль Java и нажмите Enter для безопасного освобождения ресурсов.