gpt4 book ai didi

java - 服务层和 Controller : who takes care of what?

转载 作者:IT老高 更新时间:2023-10-28 13:03:55 24 4
gpt4 key购买 nike

在类里面,我们现在正在学习如何构建 Spring 应用程序,尽管 Spring 没有直接参与,但我们学习了如何为 DAO 和服务层对象制作接口(interface)。

如果我错了,请纠正我:DAO 层非常抽象:它只包含 CRUD 操作,并进一步用于读取数据。(即:获取所有对象、获取特定对象等)

服务层:包含创建事物和删除事物的服务,这是业务逻辑应该在的地方。

现在所有这些在服务层都有意义了;除了“更新”对象。您是否只是放置了一个“更新”功能,将对象保存在数据库中?还是您还需要在那里定义逻辑?这就是我的困惑所在,我的理解是 Spring 中的对象只是 POJO 的。那么谁来验证数据呢?

假设我有一个对象“ child ”它有:NameSurNameGenderPhotoBirthdate字段。我将如何命名服务?或者你会让 Controller 负责验证,这对我来说似乎不正确。另一方面,将需要调用的每个 setter 委托(delegate)给服务层似乎也不正确。

所以基本上:帮助我定义如何通过服务层保存对象。

最佳答案

通常,Spring 服务是事务性的。事物进入特定的服务方法,因为它们应该在同一个事务中组合在一起。如果你想从数据库中检索一个对象,旋转它,并保存新版本,检索和保存应该在同一个服务方法中。所以你的服务方式是根据你需要应用程序为用户做什么来确定的。

我试图限制 Controller 做与验证 http 参数相关的工作,决定使用什么参数调用什么服务方法,在 httpsession 或请求中放入什么,重定向或转发到什么 View ,或类似的 web 相关的东西.

就验证而言:验证 Controller 中的输入参数是一件好事,可以确保没有人可以通过虚假输入破坏您的应用程序。 Controller 中的验证往往是关于确保输入在语法上是正确的(包括检测注入(inject)攻击),而服务级别验证是关于确保数据库中的事物状态符合您的预期。

Controller 包含网络框架基础设施代码,服务包含应用程序逻辑代码。

关于java - 服务层和 Controller : who takes care of what?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3885675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com