При чтении документации по hibernate возникает желание воспроизвести примеры маппингов, но для этого нужно писать конфиги, создавать структуру проекта, добавлять зависимости и всё такое. Когда не хочется делать это всё самому, можно воспользоваться примером из этой статьи.

Сохранить свой пример можно на GitHub Gist. Там есть ограничение - все файлы расположены в одной директории. Наши исходники должны лежать в корне проекта.

Что представляет из себя пример:

  • весь код на Groovy. Он лаконичнее чем java -> сильно меньше кода
  • конфигурацией занимается Spring Boot
  • В проекте 3 файла. Все лежат в одной директории
  • сборщик - Gradle

Файлы:

  • файл Application.groovy - сущности и репозитории
  • файл Spec.groovy - spock тест
  • файл build.gradle

Структура gradle проекта(по умолчанию) выглядит следующим образом:

  • src/main/java - исходники java для продакшена
  • src/test/java - исходники java для тестов
  • src/main/groovy - исходники groovy для продакшена
  • src/test/groovy - исходники groovy для тестов

Продакшн нам в данном случае не интересен. Переопределим директорию тестовых groovy исходников чтобы они искались в корне проекта, рядом с build.gradle.

//build.gradle
sourceSets.test.groovy {
srcDir projectDir.absolutePath
}

Запускаем пример с GitHub Gist

git clone https://gist.github.com/c9ce30139b7dfeac0702.git
cd c9ce30139b7dfeac0702
gradle test

Комментарии

В файле Application.groovy описан класс Language и интерфейс LanguageRepository.

Language - jpa сущность, которую будем сохранять и читать из базы

LanguageRepository - репозирорий, реализацией которого занимается Spring Data в рантайме.

В build.gradle подключаем зависимости, в том числе ‘com.h2database:h2’ базу данных.

upToDateWhen { false } // запускаем тесты даже если у нас не изменились исходники

Исходники примера