@vi0

Для чего нужен слой сервиса без логики?

Всегда встречаю такой слой сервиса над слоем репозитория
Бизнес логика идет всегда выше.
Для чего он нужен? Только для валидации?

@Service
public class Service1 {

    private final Repository1 repository;

    @Transactional(propagation = Propagation.MANDATORY)
    public Optional<Entity1> getAndLockById(@NotBlank final String name) {
        return repository.findWriteLockedByName(name);
    }

    public List<Entity1> getAll() {
        return repository.findAll();
    }

    public Entity1 save(@Valid final Entity1 entity1) {
        return repository.save(entity1);
    }

    public boolean existsById(final String name) {
        return repository.existsById(name);
    }

    public Optional<Entity1> getWriteLockedById(final String name) {
        return repository.findWriteLockedByName(name);
    }

    public void delete(@Valid final Entity1 existent) {
        repository.delete(existent);
    }
}
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 3
xez
@xez Куратор тега Java
TL Junior Roo
Вообще-то тут должен быть маппинг доменной модели, но о нём, видимо, забыли и пытаются сохранить ее в бд непосредственно, и, самое ужасное, восстановить.
То, что слой есть - похвально, то, что там ничего не происходит (хотя должно) - нет.
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
Нет, для автоматического построения связей Spring’ом.
Почему-то этот товарищ сделал эту штуку очень тонкой обёрткой над предметной логикой: то ли имя findWriteLockedByName не нравится, то ли не знал, будет сделана служба на Spring или на чём-то другом.
Ответ написан
Комментировать
@Valerdos_UA
Это выглядит как адаптер репозитория. Т.е. уровень абстракции, скрывающий использование репозитория как такового.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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