我有一个名为“家长”一个简单的POJO其中包含对象的集合“孩子”。

在休眠/ JPA,它只是一个一对多的关联,孩子不知道他们的父母:这些子对象可以有不同类型的家长,因此很容易不知道父(认为儿童的代表标签和父母可以是具有标记不同的对象类型)。

现在,我在我的父对象发送到我的网站的客户视图,允许用户对其进行修改。

有关它,我使用休眠/ GWT / Gilead公司。

我的用户mades一些更改,并点击保存按钮(AJAX),它发送我的父对象到服务器。我的父母的领域已被修改,但更重要的是,一些子对象已添加或集合中删除。

要总之,当父对象回来到服务器,它现在有它的汇集: - 新的“儿童”对象其中id为空,需要坚持 - 修改“儿童”的对象其中id是不是空,需要合并 - 潜在的黑客攻击“孩子”对象其中id是不是空但不最初由母公司持有 - 子对象缺失(删除):需要被删除

你如何保存父对象(及其集合)?你从数据库中加载父集合比较修改集合中的每个对象,看看有没有被黑客入侵的项目? 你清除旧集合(除去孤儿),然后重新添加新的儿童(但有一些儿童还没有被修改)?

感谢

PS:我的英语很抱歉,我希望你理解的概念;)

有帮助吗?

解决方案 2

我发现的最好的解决方法是管理DTO,手动创建。该DTO只发送需要DATAS到客户端。因为我想以只读模式集中的每一个领域,我计算基于密钥的签名,我发送给客户端与我的DTO。

在我的DTO回来到服务器,我检查签名,以确保我的只读域并没有改变(重新计算与回来场签名,并将其与签名来跟DTO回)

这使我可以指定只读域,并确保我的对象不是黑客攻击。

其他提示

东西在你的栈必须提供你所谈论的逻辑,并给予你的情况下,它可能是你。你必须从你的数据源读取,所以你可以做的比较来获得对象的当前的持久性状态。请记住,如果若干合法的行为可以更新你的父对象及其集合同时您将有超过定义您的交易谷物和你的代码的线程安全的性质,采取非常谨慎。

这是不以任何方式一个简单的问题,有可能是框架的功能,可以帮助,但我还没有找到一种解决这个对我所遇到的任何真实世界的实现,特别是当我有试过逻辑合法和区分“黑客”的数据。

您可以考虑改变你的架构使得家长和孩子单独行动坚持。它可能不是你的情况适当的,但您可能能够通过分裂有交易的更精细了持久的行动,并提供面向儿童的安全,这使得黑客更易于管理的您的问题。

好运。我建议你画你做太多的编码之前,你的逻辑的详细流程图。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top