spring mvc dao和服务bean映射

时间:2010-09-30 10:06:31

标签: java spring hibernate spring-mvc javabeans

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

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

并且使用spring hibernate设计好的Web应用程序的任何参考材料都会受到赞赏;)

谢谢

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

FWIW - 我刚刚在Spring上进行了类似的学习过程。好消息是,google上有很多例子;坏消息是,没有很多“完整”的例子对新手有好处(如果你打算以v3 Spring为目标,那里有很多pre-v3的东西可能会因为新的而混淆基线)。对我有用的是:从SpringSource站点上的示例应用程序开始(http://www.springsource.org/documentation)。在他们的几个例子之间,几乎所有你需要的部分,至少是最小的形式。当我在那些我需要的例子中找到一些东西时,我用类似的术语(一些@注释等)搜索,以找到关于该给定主题的更完整的信息/更好的例子。其中许多搜索让我回到了这个网站,这就是为什么我开始经常光顾这里 - 很多好的问题已经回答了。我想这不是一个过于富有洞察力的答案,但是这个过程让我在很短的时间内完成了基础工作。

答案 2 :(得分:1)

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

DAO负责从\到DB获取单个对象并将其放入。例如,从DB获取User(id,name,lastname)。

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

答案 3 :(得分:1)

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

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

相关问题