You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring MVC与Hibernate删除记录最佳实践:传模型还是参数更优?

删除数据库记录的最佳实践分析

针对你提到的两种删除方式,优先选择将ID传入服务层,再由DAO层执行删除,原因如下:

  • 性能更优:第二种方式需要先查询模型实例再执行删除,多了一次数据库交互。在高并发场景下,额外的查询会增加数据库负载,影响系统响应速度。
  • 分层职责更清晰:控制器的核心职责是接收请求、参数校验和返回响应,不应该承担查询数据库的工作。把ID传给服务层后,服务层可以统一处理业务逻辑(比如校验当前用户是否有权限删除该记录、判断记录是否存在),再委托DAO层执行删除操作,完全符合视图→控制器→服务层→DAO层的分层设计初衷。
  • 避免并发场景下的异常:如果控制器先查询出实例,在传递到服务层的过程中,该记录可能被其他请求删除,此时再用旧实例执行删除会引发异常。而直接通过ID在服务层处理,可以在删除前做实时的存在性校验,逻辑更可靠。

关于你提到的“各层间应传递模型而非参数”,这个原则适用于需要完整模型数据的业务操作(比如更新多条字段的场景),但删除操作只需要唯一标识(ID)就能完成,不需要整个模型实例,因此不必硬套这个规则,要根据实际操作场景灵活调整。

内容的提问来源于stack exchange,提问作者HamidYari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:35:28