@1nd1go

Entity Interface — антипаттерн?

Приветствтую!


Жизнь заставляет провести выделение DAO уровня в отдельный артефакт, для простоты миграции на другое хранилище данных.


Обнаружил, что модели (entity) зачастую имеют много навешанных аннотаций, которые в новом хранилище и его ORM не применимы.


Так как entity используются на сервисном уровне, который остается общим, соответственно имеется мысль выделить у entity интерфейсы и их использовать на сервисном уровне.


Является ли это нормальной реализацией или все-таки это не соответствует представлениям о прекрасном?
  • Вопрос задан
  • 3508 просмотров
Решения вопроса 1
@dborovikov
Для полноценной переносимости между различными источниками данных нужно, что бы методы dao возвращали DTO, а не хранимые сущности. DTO-шки желательно сделать immutable и положить в dao-api. В реализации dao нужно будет еще сделать меппер между сущностями и dto-шками.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
zizop
@zizop
Жизнь заставляет провести выделение DAO уровня в отдельный артефакт
Ну так и выделяйте. Потом, когда мигрируете полностью, всё равно небольшой рефакторинг придётся делать. Заодно и это поправите. А там глядишь и ситуация другая будет.
Ответ написан
@Zamorozka
Не совсем понял вопроса, вы хотите отказаться от DAO?
Если так, то например в spring roo так и сделали, все DAO медоты статичны и принадлежат классу entity.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы