Как правильно реализовать паттерн repository с hibernate?

Начал изучать hibernate, сейчас использую его со spring boot. Написал контроллер и сервисный слой, остановился на написании репозитория.

У меня есть несколько объектов - Question, Variant, Vote и User. Каждый хранится в своей таблице. И, по тем материалам которые я прочитал по паттерну repository, для каждого entity я должен сделать:
1. Интерфейс
2. Реализацию интерфейса, которая будет предоставлять доступ к разным типам хранения, что может помочь позже при смене базы данных.

Получается для 4 entity я должен сделать 4 репозитория и 4 интерфейса. При том что каждый репозиторий будет выполнять одни и те же действия.

Вопрос: Какой существует правильный способ реализовать этот паттерн?
  • Вопрос задан
  • 380 просмотров
Решения вопроса 1
@Akela_wolf
Extreme Programmer
В случае Spring Boot JPA вам не нужно создавать реализацию интерфейса репозитория. Достаточно написать интерфейс - реализацию спринг создаст сам.

Если же хочется сделать руками - то да, 4 интерфейса, 4 реализации. У реализаций может быть общий абстрактный предок, в который будет вынесен общий для всех реализаций код (тут generic-и в помощь).

Вообще, если следовать принципам чистой архитектуры, то интерфейсы репозиториев должны относиться к модулю бизнес-логики, а реализации - к модулю системы хранения. Тогда, простой заменой одного модуля хранения на другой можно добиться "бесплатной" подмены всех реализаций (потому что на практике обычно не бывает такого, что часть сущностей в файлах, часть в БД, часть в сетевом хранилище - как правило все в каком-то одном хранилище находится)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы