我不知道我的问题是否足够清楚,但想象一下我需要从数据库中删除实体的情况。
如果我使用 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/