【问题标题】:spring mvc dao and service bean mappingspring mvc dao和服务bean映射
【发布时间】:2011-04-19 06:41:11
【问题描述】:

我是 Spring 和休眠的新手。 我正在尝试学习 j2ee 应用程序中的最佳实践和设计方法。

我设法创建了一个基本的 spring mvc web 应用程序。现在找那个 - 我应该如何将我的服务 bean 映射到 dao bean 或者应该只使用 dao bean。 - 是否需要将 DAO 类设为单例 - 如果我对 jsp 使用相同的 dao bean,那么例如onSubmit 如果我必须在多个表(dao bean)上输入数据,那么我将如何做到这一点。 1 个服务 bean 到 1 个以上的 dao bean??

任何关于使用 spring hibernate 设计好的 web 应用程序的参考资料都将不胜感激 ;)

谢谢

【问题讨论】:

    标签: java spring hibernate spring-mvc javabeans


    【解决方案1】:

    您必须使用服务 bean。服务逻辑应该只存在。 DAO 应该只用于 DB 相关的操作。

    现在您可以在服务 bean 中注入多个 DAO。

    【讨论】:

    • 我可以在只使用 spring-mvc 的同时将 DAO 注入服务并且只需要添加 applicationContext.xml 吗??
    • @user330281 是的,你应该将 DAO 注入服务层,关于 while only using spring-mvc and would only need to add applicationContext.xml?? 这部分我不清楚
    【解决方案2】:

    FWIW - 我刚刚在 Spring 上经历了类似的学习过程。好消息是,谷歌上有很多例子;坏消息是,没有很多适合新手的“完整”示例(如果您要针对 v3 Spring,有很多基于新版本的 v3 之前的内容可能会令人困惑)基线)。对我有用的是:从 SpringSource 站点 (http://www.springsource.org/documentation) 上的示例应用程序开始。在他们的几个例子中,你需要的几乎所有的部分,至少是最小的形式。当我在这些示例中找到我需要的内容时,我根据类似的术语(一些 @ 注释等)进行搜索,以找到关于该给定主题的更完整信息/更好的示例。许多搜索让我回到了这个网站,这就是我开始经常光顾这里的原因——很多好问题已经得到了解答。我想这不是一个过于有见地的答案,但这个过程让我在相当快的时间内完成了基础知识。

    【讨论】:

      【解决方案3】:

      DAO 层和服务层是不同的实体:

      DAO 负责从\到 DB 获取和放置单个对象。例如,从 DB 中获取 User(id, name, lastname)。

      服务层负责您的业务逻辑。它可以使用多个 DAO 对象来执行一项操作。例如,从一个用户向另一个用户发送消息,并将其保存在第一个用户的已发送文件夹和收件人的收件箱中。

      【讨论】:

        【解决方案4】:

        服务是向用户呈现一个外观,该外观暴露了用户可以使用的业务功能。基本上,如果您有一组低级用例,则服务上的方法将与单个用户操作保持一致。服务是事务性的,通常如果用户做了某事,我们希望该操作的所有后果一起提交。控制器和服务之间的分离意味着我们可以在一个地方放置特定于 webapp 的功能,例如获取请求参数、进行验证以及选择转发或重定向到的位置,以及一个单独的地方来放置业务逻辑,而不是取决于 webapp apis,并且是关于哪些对象使用哪些值进行更新并使用哪些数据访问对象进行持久化。

        我看到很多情况,人们似乎认为他们需要为每个 dao 提供一项服务。我认为他们的假设是,因为数据访问对象、控制器和模型对于它们的定义方式相当机械,所以服务必须以相同的方式进行,并且它们在不考虑正在实现的用例的情况下构建它们。发生的情况是,除了有大量无用的服务样板代码外,所有业务逻辑最终都在控制器中与特定于 Web 的代码混杂在一起,控制器变得庞大且难以管理。如果您的应用程序非常简单,您可以暂时使用它,但它是杂乱无章的,很难测试,而且通常是个坏主意。关注点分离,将基础架构代码保存在一个地方,将业务代码保存在另一个地方,这是我们应该追求的目标,正确使用服务对实现这一目标非常有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-04
          • 2018-01-11
          • 2012-06-01
          • 2021-03-19
          • 2013-04-20
          • 2011-03-17
          • 2012-08-14
          • 1970-01-01
          相关资源
          最近更新 更多