gpt4 book ai didi

java - 处理用户操作的表单数据的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-02 05:05:48 27 4
gpt4 key购买 nike

快速概述:

我有一个飞行员和船舶实体。一名飞行员可以拥有几艘飞船,但一次只能激活一艘飞船。
现在,假设一名飞行员想要激活另一艘飞船。在这种情况下,提交了包含船舶 ID 的表单,我必须显示一条包含结果的消息(激活或未激活)。

假设用户更改了 html 中的船舶 ID(更改为不存在的船舶或另一用户的船舶),这两种可能性中哪一种更“合适”?

选项 1:
在负责激活船舶的服务层函数中执行检查,如果出现问题则抛出异常。然后, Controller 会处理异常,并将适当的消息添加到模型中。

选项 2:
在 Controller 内部执行验证并调用服务层函数,仅当数据正确时才激活船舶。

我认为第二个选择一开始似乎更好,但缺点是我必须进行两次精确的数据库查询才能找到这艘船。 Controller 中的一个用于验证目的,然后服务层中的另一个用于实际激活它。服务方法是@Transactional,所以如果我将发现的 Controller 作为参数传递,Hibernate 无论如何都会从数据库中检索它,所以现在我选择选项 1 以避免重复数据库调用,因为这看起来很糟糕。

我仍在学习,所以我很想听听更有经验的用户在这种情况下会说些什么。如果有更好的方法,我也愿意接受建议。提前致谢。

最佳答案

您的业务逻辑应该位于实体或服务类中,或者使用 Hibernate Validator 之类的东西。 Spring 不是很 DDD,所以服务是正常的路线。

在 Controller 中保留尽可能少的逻辑。如果您切换到不同类型的用户界面(例如 REST API),这将使您的模型更加有用。

顺便公开你的数据库 key 是可以的,只要你使用 Spring Security ACL 之类的东西来不向错误的用户公开数据。

关于java - 处理用户操作的表单数据的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808996/

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