我的 Web 应用程序是使用 Spring MVC + Hibernate 编写的。
- 我的模型是“客户”实体 POJO。
- 我有一个 DAO 对象“CustomerDAO”,它的方法“saveCustomer(c)”包含与 Hibernate 交互的代码;
- 然后我创建了一个带有“saveCustomer(c)”方法的“ CustomerService ”,它只是将客户对象传递给dao进行保存;
- 最后是“CustomerController”和customer.jsp,负责视图层,jsp的表单域绑定到控制器端的一个Customer对象。控制器调用服务。
我看到很多应用程序都遵循这个(最佳)实践,但我想知道为什么我需要一个服务层。
也许它对于解耦目的很有用:我可以向控制器显示一个通用外观,并注入服务 HibernateDAO、GaeDAO、MyDAO 等......但我也可以在没有服务的情况下做到这一点:使用接口。
我还认为:验证。我将在服务中进行我的客户验证,但是.... 在 Spring 控制器中进行验证要方便得多。
请帮我理解这个概念:)
您不需要 服务层。但是它可以帮助您
class Service { private DatabaseBarRepo barRepo; private DatabaseFooRepo fooRepo; @Transactional public void serviceRoutine() { barRepo.doStuff(); fooRepo.doStuff(); } }
在这里,我们让两个独立的存储库参与同一事务。这是特定于数据库的,尽管这些原则也适用于其他系统。