Design patterns 使用SpringMVC对列表(保存为XML)执行CRUD操作的设计模式

Design patterns 使用SpringMVC对列表(保存为XML)执行CRUD操作的设计模式,design-patterns,web-applications,spring-mvc,xml-parsing,crud,Design Patterns,Web Applications,Spring Mvc,Xml Parsing,Crud,我正在尝试使用SpringMVC、XMLBeans和常用的JavaEE堆栈来增强现有的JavaWeb应用程序。最终用户对各种列表(对象列表)执行CRUD操作。该列表最终使用XMLBeans保存到XML文件中。使用XMLBeans再次从XML文件中提取更新的列表,并显示给用户。是否有合适的设计模式来优化这些操作 我计划将列表中每个项目的随机ID存储到XML中,并将其用作html表单隐藏字段,以标识当前为CRUD修改的列表元素。有更好的方法吗?由于数据最终存储到XML中,因此没有默认ID(如在数据库

我正在尝试使用SpringMVC、XMLBeans和常用的JavaEE堆栈来增强现有的JavaWeb应用程序。最终用户对各种列表(对象列表)执行CRUD操作。该列表最终使用XMLBeans保存到XML文件中。使用XMLBeans再次从XML文件中提取更新的列表,并显示给用户。是否有合适的设计模式来优化这些操作

我计划将列表中每个项目的随机ID存储到XML中,并将其用作html表单隐藏字段,以标识当前为CRUD修改的列表元素。有更好的方法吗?由于数据最终存储到XML中,因此没有默认ID(如在数据库中),因此我考虑随机生成一个ID并使用它来跟踪。是否有一个设计模式可以解决这个用例


我还试图找出一种跟踪积垢操作是否成功的方法。这样最终用户就可以知道请求是否通过了。可能是回调消息?

就模式使用而言,我假设您的前端通过使用漂亮的POJO、DTO等与CRUD操作的螺母和螺栓分离(参考)。通过这种方式,将来可以在不影响客户端的情况下更改为任何其他持久性机制。然后,您的MVC控制器将以通常的方式提供POJO或其某些表示

关于ID创建,我的意见是不要使用随机数,主要是因为可能会生成重复的密钥。我个人倾向于更确定的东西,例如长计数或时间戳。您没有提到后端的体系结构,因此仍然可能会产生重复的密钥,但如果小心一点,可以将其最小化


关于向最终用户说明操作的成功/失败,我不确定是否有足够的信息给出明确的答案。这可能取决于最终用户的期望。如果最终用户是信息的软件使用者,他们希望在创建时获得一组ID,并在更新/删除时获得成功指示。如果它是一个有生命、有呼吸的人,那么你会想在这里做一些交互设计。例如,如果用户确实在执行CRUD操作,那么他们很可能希望看到生成的ID以及保存的数据的内容;但是,如果事情比这更抽象,那么从视觉角度来看,在前端的页眉/页脚中显示一条简单的“成功”消息就足够了。这在技术上可能采取回调的形式(例如AJAX/jQuery),也可能只是一个显示结果的JSP,或者两者的组合。

DAO模式目前正在使用。所以我想在这个舞台上没有什么改进的余地。。关于重复的钥匙,我喜欢你的长柜台的想法。挑战在于所有内容都存储在XML中。因此,长计数器也必须存储在xml中,这增加了额外的管理内容。但我看没有更好的办法了。关于“成功”信息,最终用户是人。我可以让CRUD函数在完成时返回一条成功消息,但是当没有可能的函数返回并且抛出异常时,我如何处理失败?我认为有多种方法可以做到这一点。ID不需要存储在XML中,这取决于您希望得到的详细程度。例如,可以将ID存储在键值存储中,“值”是服务器端的文件路径。如果ID只是在XML中,则可能更简单,但任何一种方法都可以使用。对于成功/失败指示,不仅仅是在服务器端捕获异常并在此基础上创建一条优美的消息吗?我可能不理解你的观点。