了解服务和 DAO 层

Posted

技术标签:

【中文标题】了解服务和 DAO 层【英文标题】:Understanding Service and DAO layers 【发布时间】:2012-08-12 10:59:15 【问题描述】:

我被要求在项目的业务逻辑模块中创建类文档。我注意到有一个关于如何创建类的模式。图案是这样的

    public class AModel()
          //fields
          //getter and setters
    

    public class AService()

          public void processA(AModel model)
                  //creates instance of AModel, assigns values to fields
                  //calls ADaoService methods
            

    

    public class ADaoService()

           //has methods which call ADao methods
           //sample
           public AModel retrieveById(long id)
                 log.debug(...);
                 return (ADao.retrieveById(id));
           

    

    public class ADAo()
            //has entityManager and some query

            public AModel retrieveById(long id)
                  return((AModel) entityManager.find(AModel.class, id));
            
    

我不明白为什么 AService 调用 ADaoService 方法而不是仅仅调用 ADao 方法,因为 ADaoService 方法只是调用 ADao 方法。在我看来, ADaoService 只是浪费代码。它们是使用 Hibernate 和 JBoss 服务器。我只是这种架构的新手。希望有人能帮助我理解。谢谢。

【问题讨论】:

【参考方案1】:

好吧,如果 ADaoService 只是将调用委托给 ADao 什么都不做,那么显然你是对的 - 它目前没有存在的理由

关于未来理由,嗯,AFAIK,典型的分层不包括ADaoService 层。我工作的地方我们没有。在 Hibernate 文档中从未见过它...

要么你的架构师对层很慷慨,要么他们想到了一些非典型场景。

如果该层没有当前用途,也没有明确的未来用途 - 最好没有它。

【讨论】:

以上是关于了解服务和 DAO 层的主要内容,如果未能解决你的问题,请参考以下文章

域、DAO 和服务层

谁来验证我的 DAO 的输入?

J2EE之DAO设计模式及简单实现

ASP.NET 应用程序中 WCF、DAO 和 DTO 层之间的交互

我们可以从 DAO 层返回 json 对象吗?

数据访问层和数据访问对象有啥区别?