У меня есть простое pojo с именем «Родитель», которое содержит коллекцию объекта «Ребенок».Вопрос безопасности: как защитить коллекции Hibernate от клиента на сервер?
В hibernate/jpa это просто ассоциация «один-ко-многим», дети не знают своего родителя: у этих дочерних объектов может быть другой тип родителя, поэтому легче не знать родителя (подумайте о ребенке, который представляет теги и родители могут быть разными типами объектов, которые имеют теги).
Теперь я отправляю объект родительского объекта на клиентский вид моего веб-сайта, чтобы разрешить пользователю его изменять.
Для этого я использую Hibernate/GWT/Gilead.
Мой пользователь внес некоторые изменения и нажмите кнопку сохранения (ajax), которая отправляет мой родительский объект на сервер. поля моего родителя были изменены, но более важны, некоторые дочерние объекты были добавлены или удалены в коллекции.
Для резюме, когда объект Родителя возвращается на сервер, теперь он имеет в своей коллекции: - новый «ребенок» объекты, где идентификатор утративший должен быть сохраняться - модифицированном «ребенок» объектов, где идентификатор не является нулевым и должны быть слияние - потенциально взломанные «ребенок» объекты, где идентификатор не является нулевым, но изначально не принадлежат Материнской - дочерние объекты отсутствуют (удалены): необходимо удалить
Как сохранить родительский объект (и его сбор)? загружаете родительскую коллекцию из базы данных, чтобы сравнить каждый объект измененной коллекции, чтобы увидеть, нет ли взломанного элемента? Вы очищаете старую коллекцию (для удаления сироты) и повторно добавляете нового ребенка (но есть какой-то ребенок, который не был изменен)?
благодаря
PS: Извините за мой английский, я надеюсь, что вы понимаете концепцию;)
Здравствуйте, спасибо за ваш ответ;) Все мои функции являются транзакциями, поэтому у меня нет проблемы с развращением моей базы данных. Все, что вы сказали, именно то, что я имею в виду;) В большинстве случаев, которые я использовал, я пытался сохранить и слить ребенка независимо от моего родителя (который чище и проще в безопасности, как вы говорите), но в в некоторых случаях я не могу (мой клиент добавляет небольшой тег, но я хочу подождать, когда он сохранит весь родитель, и не сразу сохранит тег ...). Это сложная проблема ... –