环境
Spring/hibernate/MySQL web 应用
问题
我有一个多步骤表格,应该可以在每一步保存以供以后完成。但不完整的步骤可能包含模型所需的字段,因此无法保存模型。
我尝试过或想过尝试的事情
- 使字段可以为空。
- 使用临时表保存不完整的表格
但是..
解决方案 1 破坏了数据库设计,解决方案 2 会用片段来膨胀我的代码,以便在临时模型和永久模型之间进行转换,如果我在保存表单后添加编辑表单的功能,这将变得很难看。
如何以无缝优雅的方式实现完整的后期功能?
环境
Spring/hibernate/MySQL web 应用
问题
我有一个多步骤表格,应该可以在每一步保存以供以后完成。但不完整的步骤可能包含模型所需的字段,因此无法保存模型。
我尝试过或想过尝试的事情
但是..
解决方案 1 破坏了数据库设计,解决方案 2 会用片段来膨胀我的代码,以便在临时模型和永久模型之间进行转换,如果我在保存表单后添加编辑表单的功能,这将变得很难看。
如何以无缝优雅的方式实现完整的后期功能?
另一种选择是boolean
在您的数据库表中有一个列complete_edit
。对于那些在保存期间未首先输入的列,存储默认值或类似“NOT_COMPLETE”的字符串并将complete_edit
列设置为false。只有在提交时,此列才应为 true。
FWIW,我强烈反对临时表保存不完整的表格。我们在当前的应用程序中有一个类似的设置(以跨不同用户会话的多个步骤准备发票),这会导致可维护性问题以及对临时表和永久表的不连贯修改。
我们正朝着具有鉴别器状态列的单表方法发展,该方法将对这些进行中的发票进行分类,以便在状态翻转之前,后续工作流程步骤不会选择它们。
我推荐解决方案 2:临时表:因为它清楚地区分了您的域模型(普通表)和一些 GUI 内容,例如持久向导。
如果您不分开,那么您需要在程序中的任何地方检查数据是域模型数据或 gui 数据(在每件事完成后将成为域数据)。