java - DAO 方法应该调用同一类中的另一个方法还是应该由服务层执行?

标签 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() 的调用应该在服务层进行,还是正确的方法?

最佳答案

“正确的方法”实际上取决于用户对 DAO 接口(interface)的需求。

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

在相关主题中,我们还可以考虑使用 query删除对象而不从数据库获取它。

关于java - DAO 方法应该调用同一类中的另一个方法还是应该由服务层执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55014440/

相关文章:

java - 从表单调用 servlet,但 servlet 从未被调用

java - 如何让EntityManager在DAO Factory中正常工作?

java - 如何在纯 JPA 中为 native 查询配置默认数据库架构?

java - DAO 层内的 JDBC 连接

java - 不使用hibernate模板的服务方法

java.lang.ClassNotFoundException : com. mysql.jdbc.Driver - 不工作

java - 使用 Graphics2D 填充透明度

java - 在 spring 应用程序中注入(inject) 2(不久的将来 3)个不同的 entityManagerFactory(或 entityManager)

java - DAO 可以使用本身封装了 dataSource 对象的对象吗?

java - 如何向 Undertow 的 ClientRequest 添加 cookie?