从另一个服务调用服务 vs dao
Posted
技术标签:
【中文标题】从另一个服务调用服务 vs dao【英文标题】:call service vs dao from another service 【发布时间】:2015-11-10 01:03:34 【问题描述】:我有用户和角色实体和服务,它们的 DAO 层。我需要来自 UserService 的角色列表。
我应该从 UserService 中使用哪个层? RoleService vs RoleDAO 的调用列表方法?哪一个是常用的,为什么?
【问题讨论】:
【参考方案1】:调用RoleService
中的list方法。
围绕角色的业务逻辑可能有一天会发生变化,RoleService
中的所有更改都将无法处理所有直接调用 DAO 的代码。
【讨论】:
是的,我一开始也是这么想的。但是Service称它为DAO,我认为仅从服务层调用DAO可能是个好主意(可能有一些原因),因为服务层用于调用dao。 服务调用服务完全没问题【参考方案2】:通常 DAO 层靠近数据库,Service 层封装你的业务逻辑,执行任何事务或其他事情,而不仅仅是调用 DAO。
服务调用另一个服务更常见,因为
您的 RoleService 可以评估一些业务代码,您可以从事务或通过 JMS 传递消息中受益,或者您可以在将来对服务方法进行一些安全保护。因此,分离关注点是一种很好的做法。
易于模拟服务和测试(甚至可以测试DAO),但是使用服务层接口分离业务逻辑是一个好方法。
但是如果你在服务层没有任何业务逻辑,你可以通过简单地使用DAO来避免冗余代码(但将来如果你想到服务层业务,你将有代码债务重构)
【讨论】:
以上是关于从另一个服务调用服务 vs dao的主要内容,如果未能解决你的问题,请参考以下文章