从另一个服务调用服务与 dao
call service vs dao from another service
我有用户和角色实体和服务,它们的 DAO 层。我需要 UserService 的角色列表。
我应该从UserService使用哪一层? RoleService vs RoleDAO的调用列表方法?哪一个是常用的,为什么?
调用RoleService
中的列表方法。
围绕角色的业务逻辑可能有一天会发生变化,RoleService
中要处理的所有更改对于直接调用 DAO 的所有代码都将毫无用处。
通常 DAO 层靠近数据库,服务层封装您的业务逻辑,执行任何交易或其他事情,而不仅仅是调用 DAO。
服务调用另一个服务更常见,因为
您的 RoleService 可以评估一些业务代码,您可以从交易或通过 JMS 传递消息中受益,或者您可以在未来的服务方法上获得一些安全性。因此,分离关注点是一种很好的做法。
很容易模拟服务和测试(这可以说连 DAO 都可以测试),但是分离业务逻辑是使用服务层接口的好方法。
但是如果你在服务层没有任何业务逻辑,你可以通过简单地使用DAO来避免冗余代码(但是对于未来,如果你想到服务层业务,你将有代码债务重构)
我有用户和角色实体和服务,它们的 DAO 层。我需要 UserService 的角色列表。
我应该从UserService使用哪一层? RoleService vs RoleDAO的调用列表方法?哪一个是常用的,为什么?
调用RoleService
中的列表方法。
围绕角色的业务逻辑可能有一天会发生变化,RoleService
中要处理的所有更改对于直接调用 DAO 的所有代码都将毫无用处。
通常 DAO 层靠近数据库,服务层封装您的业务逻辑,执行任何交易或其他事情,而不仅仅是调用 DAO。
服务调用另一个服务更常见,因为
您的 RoleService 可以评估一些业务代码,您可以从交易或通过 JMS 传递消息中受益,或者您可以在未来的服务方法上获得一些安全性。因此,分离关注点是一种很好的做法。
很容易模拟服务和测试(这可以说连 DAO 都可以测试),但是分离业务逻辑是使用服务层接口的好方法。
但是如果你在服务层没有任何业务逻辑,你可以通过简单地使用DAO来避免冗余代码(但是对于未来,如果你想到服务层业务,你将有代码债务重构)