4

DAO 类是否负责处理以下所有方法?或者最好将一些方法排除在服务层中?

我在这里找到了这个界面。我考虑在我的代码中重复这个接口..

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);
}
4

2 回答 2

4

GeneralDao 中列出的所有方法都与 DAO 模式兼容。

此外,它可能具有特定于您使用的实体的方法,只要它们与从存储中持久化/检索有关。. 例如 CustomerDao:除了 GeneralDao 上的方法外,可能还有方法可以通过与客户相关的标准进行查找。. . 如果你能以一种特定的方式呈现它,从而产生更多的描述性代码,那就更好了。细节并专注于一个实体并没有错。

(CustomerDao、OrderDao、ProductDao、...... PilotDao、BookDao 等。所有这些都可以具有与该类型实体的存储和检索相关的独特方法)

如果您可以将底层持久存储换成其他东西,您就会知道您仍然尊重 DAO 模式,并且 DAO 仍然有意义。

于 2013-01-18T06:48:08.083 回答
1

DAOs(被称为数据访问对象)主要是为了提供对底层数据存储的抽象,并将其他模块与底层 DBMS 和模式的担忧隔离开来。只要您不使用 DAO 来保留业务逻辑或与数据访问无关的任何其他内容,我认为您就很好。

于 2013-01-18T07:01:41.027 回答