这是一个相当理论的问题:
在我的服务类中,如果由于任何原因无法执行操作,即使原因是错误输入或任何其他预期和检查的情况,我也倾向于始终进行回滚。
在使用 Open Session in View 模式 (OSIV) 的 Web 应用程序中,这具有令人讨厌的副作用,即会话关闭并且任何后续延迟加载操作都会失败。我必须编写丑陋的管道代码,以便仅在请求期间的某个时间点发生错误时在请求结束时回滚会话。
这让我开始思考:如果真的出了问题,回滚是否应该是一种特殊的措施?如果不满足条件,服务方法是否必须自己确保不写入/更改数据?输入验证成功但服务方法判定所选输入非法时,前端层更新模型对象(如表单)的情况如何处理?例如,当没有完成回滚时,Hibernate 会在默认配置中自动保留这些更改。
期待您的意见和建议!