Я работаю над java spring mvc-приложением и задаю важный вопрос о сопоставлении объектов модели объектов с объектами модели базы данных. В нашем приложении используется dozer mapper для этой цели.
Предположим, что у меня есть модель Person и BaseInformation. Модель BaseInformation предназначена для общих данных, которые могут использоваться во всех других моделях, например гендерные группы, цвета, единицы измерения,....
BaseInformation:
class BaseInformation{
private Long id;
private String category;
private String title;
}
Это может иметь таблицу базы данных следующим образом:
Id | Category | Title
-------------------------
1 | "gender" | "male"
2 | "gender" | "female"
3 | "color" | "red"
4 | "color" | "green"
...
Это часть моей модели Person:
public class Person{
...
private BaseInformation gender;
...
}
И это часть моего RegisterPersonViewModel
public class RegisterPersonViewModel{
...
private Integer gender_id;
...
}
В представлении зарегистрировать человека у меня есть <select>
, который заполняется из BaseInfromation с категорией gender. Когда пользователь передает эту форму, запрос ajax отправляет методам контроллера следующим образом:
@RequestMapping("/person/save", method = RequestMethod.POST, produces = "application/json")
public @ResponseBody Person create(@Valid @RequestBody RegisterPersonViewModel viewModel) throws Exception {
//Mapping viewModel to Model via dozer mapper
//and passing generated model to service layer
}
Теперь, вот мой вопрос:
Пользователь может изменить value
гендерного combobox в представлении вручную (например, установить значение цвета вместо пола) и отправить недопустимые связанные данные в метод контроллера. Отображение карты картеля бульдозераМодель модели, и эти недопустимые данные проходят через уровень доступа к данным и сохраняются в базе данных. Другими словами, Недействительные данные могут сохраняться в базе данных без какого-либо контроля. Я хочу знать, как лучше всего управлять реляционными данными с минимальным кодом.