我正在研究Java上的企业应用程序。为了与数据库交互,我使用EJB。
数据库中有许多表,其中的值可通过web ui编辑。目前,当用户进行一些更改时,这些更改会立即写入数据库。
但是,在用户按下网页上的“保存”按钮之前,我需要等待所有更改(不会保留)。同时,要求所有更改都应保存在用户会话中,因此我不能将它们存储在bean或客户端。即使用户重新启动计算机或从其他设备访问我的应用程序,所有更改仍应保留。所以我需要以某种方式坚持未决的变化。
我想到的第一个解决方案是创建所有可编辑表的副本,其中包含一些前缀,如“tmp”。当用户更改内容时,我会将新值存储在“tmp_something”中。当用户最后按“保存”时,我将他的更改从“tmp_something”移动到主“某事”表。要在tmp_表中分隔来自不同用户的记录,所有这些记录都将包含名为“user_id”的附加列。因此,对于所有用户,我必须拥有一份表格。
实际上,我根本不喜欢这个解决方案!我将不得不重写大量代码,为每个新表创建新类......
我的问题是:有更好的方法可以做我想做的事吗?
答案 0 :(得分:0)
1.你为什么不试试Multiton Pattern。
使用包含Map<Key, Object>
的Singleton Bean可以在应用程序范围内使用Singleton,这些对象可以通过其唯一键访问,并且只有在您明确告知它时才会保留。我希望这有帮助
2.我不太熟悉Java Transaction API。但我认为这可能是你可以查看的另一种选择。
问候