【问题标题】:DAO is responsible only for CRUD operations?DAO 只负责 CRUD 操作?
【发布时间】:2013-01-01 20:27:28
【问题描述】:

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

【问题讨论】:

    标签: c# java design-patterns dao


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多