我的一般性问题是在一个MVC模式的Web应用程序中,在请求后范围然后更新bean的首选方法是什么?我看到了3种主要方法:
1)最初加载模型时,将其作为bean存储在会话中。用户在视图中进行更改,发送请求。控制器从会话中获取bean,并从请求获取具有新bean数据的所有参数,使用它的setter更新bean,将bean发送到服务层以进行保存。
2)仅使用请求数据从头开始重建bean:最初加载模型,bean是请求作用域,视图将beanID放入其中一个表单字段(以及所有其他相关的bean属性),用户更改数据并发送请求,controller从请求中获取bean的id和所有bean属性,然后从这些bean构建一个新bean,并将该对象发送到要保存的服务。
3)与#2相同但是在请求之后,控制器只使用beanID调用服务层,beanID返回一个未更改状态的完整bean,使用从请求中检索的参数更新bean,发送更新bean返回服务层进行保存。
我想使用第一个选项,因为它似乎最容易实现,并且对数据库的负担较轻。第二个选项会减少并发性问题但是从头开始重建bean似乎很笨重,特别是如果有一些bean属性与这个视图不相关,我必须放入隐藏字段,这样我才能重建它准确。第三种选择看起来有点过分而且彻底。
相关网站的详细信息:我正在构建一个Java Web应用并尝试遵循MVC模式。该应用程序的基本功能是管理人员创建计划,帮助员工实现双方商定的目标。该计划将包含完成整体目标所涉及的不同阶段,每个阶段将具有完成阶段的特定任务(因此任务嵌套在嵌套在计划中的阶段)。因此,经理将建立一个"计划"并将其部署到员工。然后,员工登录,记录活动并在完成任务后完成任务。经理可能偶尔会修改员工计划,但他们的想法是,在部署计划后,他们会就计划的任何变更进行协作。经理还可以对员工数据进行分析,但这实际上不会改变员工数据或计划结构。
因此,鉴于员工几乎总是成为唯一一个为他/她的计划访问数据的人,我预计很多问题不会有超过1人同时访问数据。话虽如此,如果需求发生变化并且需要更多线程安全,我不想限制网站的增长。我还希望使用良好的编码实践,以便其他人更容易改进和维护网站。
感谢您的任何反馈。我这是迄今为止我做过的规模最大的项目,所以我第一次看到了很多这样的问题。
我做过的一些研究:
how to choose the right bean scope