X
X
xunterr2022-03-14 19:07:06
Hibernate
xunterr, 2022-03-14 19:07:06

How to properly implement the repository pattern with hibernate?

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

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

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

Вопрос: Какой существует правильный способ реализовать этот паттерн?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
Michael, 2022-03-15
@xunterr

In the case of Spring Boot JPA, you don't need to create an implementation of the repository interface. It is enough to write an interface - Spring will create the implementation itself.
If you want to do it by hand, then yes, 4 interfaces, 4 implementations. Implementations can have a common abstract ancestor, in which the code common to all implementations will be placed (here generics will help).
In general, if you follow the principles of clean architecture, then the interfaces of the repositories should refer to the business logic module, and the implementations to the storage system module. Then, by simply replacing one storage module with another, you can achieve a "free" replacement of all implementations (because in practice it usually does not happen that some of the entities in files, some in the database, some in network storage - as a rule, everything is in one storage is located)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question