3

我对服务有点困惑。为什么我必须使用服务进行休眠集成?我想我可以直接使用 DAO 接口。例如在本教程http://www.onlinetechvision.com/?p=566为什么他使用 IUserService 而不是 IUserDAO。IUserService 真的有必要吗?

4

2 回答 2

6

服务对几件事有好处:

  • 在事务中协调 DAO 操作,因此如果您的操作逻辑需要多个 SQL 调用,则可以一起提交或回滚。

  • 提供一个放置独立于表示的业务逻辑的地方。我有一个相关的答案,它讨论了服务而不是控制器的内容。

  • 清楚地公开您的应用程序支持的低级用例操作。换句话说,您可以通过查看服务上的方法来判断用户可以在应用程序中执行哪些操作。

如果您觉得服务太过分了(例如,您正在构建一个没有业务逻辑且不需要在事务中组合多个数据访问操作的 CRUD 应用程序),那么您不必使用它们。您可以在 DAO 上放置事务注释。

(请注意,我不熟悉 JSF(在问题中链接的教程中使用),如果这个问题有特定于 JSF 的角度,那么我无法解决这个问题。)

如果您正在构建 CRUD 应用程序,请查看 Grails 之类的东西。它提供了所有开箱即用的应用程序配置,包括让您避免编写 DAO 的数据访问方法,此外,它还允许您在没有服务的情况下开始并在需要时添加它们。

于 2013-04-19T14:02:02.803 回答
1

你注入了接口,而不是真正的实现(spring 为你注入了正确的东西)。因此,稍后如果需要,您可以根据需要更改实现。这是简单的解释,我相信很快就会有更复杂的解释。

于 2013-04-19T14:02:56.350 回答