Должен ли метод DAO вызывать другой метод внутри того же класса или сервисный уровень должен это делать? - PullRequest
0 голосов
/ 06 марта 2019

Я не знаю, достаточно ли ясен мой вопрос, но представьте себе ситуацию, когда мне нужно удалить объект из базы данных.

Если я использую EntityManager.remove(Object object) JPA, объект должен бытьизвлекается перед удалением.

Для этого у меня есть метод с именем delete(), который получает идентификатор, запрашивает объект, вызывающий другой метод с именем get(), а затем удаляет его.

public Clazz delete(Integer key) {
    Clazz clazz = get(key);
    entityManager.remove(clazz);

    return clazz;
}

public Clazz get(Integer key) {
    return entityManager.find(Clazz.class, key);
}

Я не знаю, правильный ли это подход.

Должен ли вызов для get() быть на уровне обслуживания, или это правильный путь?

1 Ответ

2 голосов
/ 06 марта 2019

«Правильный путь» действительно зависит от того, что нужно пользователю на интерфейсе dao.

Если в большинстве случаев у пользователя есть только ключ для удаления объекта, имеет смысл предоставить delete с ключом в качестве параметра. Или, если мы не уверены, мы могли бы также предоставить два переопределенных метода удаления, один с ключом, а другой с объектом.

По-прежнему на смежную тему, мы могли бы также рассмотреть возможность использования query для удаления объекта без получения его из базы данных.

...