调用服务和从另一个服务中调用DAO

9

我有用户和角色实体以及它们的服务、DAO层。我需要从UserService获取角色列表。

从UserService中该使用哪一层?调用RoleService的列表方法还是RoleDAO的方法?哪个是常用的,为什么?

2个回答

15

通常DAO层靠近数据库,Service层封装您的业务逻辑,执行任何事务或其他操作而不仅仅是调用DAO。

Service调用另一个Service更为常见,因为

  1. 您的RoleService可以有一些业务代码进行评估,您可以通过事务或通过JMS传递消息,或者将来可以在服务方法上具有一些安全性。因此,分离关注点是一个好的实践。

  2. 易于模拟服务并进行测试(即使可以争论DAO也可以进行测试),但通过使用服务层接口分离业务逻辑是一种好的方式。

但如果您的Service层没有任何业务逻辑,则可以通过简单地使用DAO来避免冗余代码(但如果您考虑到Service层业务,则将来需要重构)。


3

调用RoleService中的列表方法。

角色周围的业务逻辑可能会有所改变,RoleService中的所有更改来处理这些将对直接调用DAO的所有代码都无用。


是的,我一开始也是这么想的。但是服务正在调用它的DAO,我认为只从服务层调用DAO可能是个好主意(可能有一些原因),因为服务层用于调用DAO。 - Erlan
1
服务调用服务是完全可以的。 - cahen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接