DAO方法应该在同一类中调用另一个方法还是服务层应该这样做?

时间:2019-03-06 02:06:42

标签: java jpa dao

我不知道我的问题是否足够清楚,但是想像一下需要从数据库中删除实体的情况。

如果我使用的是JPA的EntityManager.remove(Object object),则必须在删除对象之前对其进行检索。

为此,我有一个名为delete()的方法,该方法接收一个ID,查询调用另一个称为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 个答案:

答案 0 :(得分:2)

“正确的方法”实际上取决于dao界面上用户的需求。

如果大多数时候用户仅具有删除对象的键,则更有意义的是使用key作为参数来提供删除。或者,如果不确定,我们还可以提供两种主要的删除方法,一种是使用键,另一种是使用对象。

仍然是相关主题,我们也可以考虑使用query来删除对象而不将其从数据库中获取。