DAO类负责处理以下所有方法吗?或者最好将一些方法排除在服务层之外?
我找到了这个界面here。我想在我的代码中重复这个界面..
public interface GeneralDAO {
public <T> T find(Class<T> type, Serializable id);
public <T> T[] find(Class<T> type, Serializable... ids);
public <T> T getReference(Class<T> type, Serializable id);
public <T> T[] getReferences(Class<T> type, Serializable... ids);
public boolean save(Object entity);
public boolean[] save(Object... entities);
public boolean remove(Object entity);
public void remove(Object... entities);
public boolean removeById(Class<?> type, Serializable id);
public void removeByIds(Class<?> type, Serializable... ids);
public <T> List<T> findAll(Class<T> type);
public List search(ISearch search);
public Object searchUnique(ISearch search);
public int count(ISearch search);
public SearchResult searchAndCount(ISearch search);
public boolean isAttached(Object entity);
public void refresh(Object... entities);
public void flush();
public Filter getFilterFromExample(Object example);
public Filter getFilterFromExample(Object example, ExampleOptions options);
}
答案 0 :(得分:4)
GeneralDao上列出的所有方法都与DAO模式兼容。
此外,只要它们与存储中的持久化/检索相关,就可以使用特定于您正在使用的实体的方法。 。例如,CustomerDao:除了在GeneralDao上使用方法之外,还可以通过与客户相关的标准来查找方法。 。 。如果你能以特定的方式呈现这一点,从而产生更多的描述性代码,那就更好了。细节并专注于实体并没有错。
(CustomerDao,OrderDao,ProductDao,.. PilotDao,BookDao等。所有这些都可能有与存储和检索该类型实体相关的独特方法)
如果您可以将底层持久性存储交换为其他内容,那么您仍然知道您仍在尊重DAO模式,而DAO仍然有意义。
答案 1 :(得分:1)
DAO
s(调用数据访问对象)主要用于为底层数据存储提供抽象,并将其他模块与底层DBMS和模式的担忧隔离开来。只要您不使用DAO来保持业务逻辑或与数据访问无关的任何其他内容,我认为您很好。