I have been developing spring boot rest api service, this is one of my rest controller method:
@RequestMapping(value = "manager", method = RequestMethod.PUT, produces = "application/json;charset=UTF-8")
@ResponseBody
public String updateManager(@RequestBody Managers manager,
@RequestParam(value = "sid", required = true, defaultValue = "") String sid) throws TimeoutException, SocketTimeoutException, SocketException {
final Integer managerId = checkSession(sid);
final String result = managerController.validateManagerData(managerId, manager.getName(), manager.getSurname(), manager.getPassword());
return result;
}
Manager controller it's the validator class(for example check email on null reference)
if (name != null) {
if (!GMoikaStringUtils.isValidStringLength(50, name)) {
throw new InvalidUserInputException("Wrong name format", CLASS_NAME, "validateManagerData", params);
}
}
if (surname != null) {
if (!GMoikaStringUtils.isValidStringLength(50, surname)) {
throw new InvalidUserInputException("Wrong surname format", CLASS_NAME, "validateManagerData", params);
}
}
After validation of data i call Manager service class
public JsonObject updateManager(Integer managerId, String name, String surname, String password) {
Managers manager = managerRepository.findOne(managerId);
if (name != null) {
manager.setName(name);
}
if (surname != null) {
manager.setSurname(surname);
}
if (password != null) {
manager.setPassword(password);
}
managerRepository.save(manager);
return manager.toJson();
}
My qustion is, i pass a lot of params into methods(name,surname,email,password etc) if i change the order , i will save wrong params into db. The first decision is to pass Manager object instead of manager params. But in this case i will have the following scenario:
public JsonObject updateManager(Integer managerId,Managers manager2) {
Managers manager = managerRepository.findOne(managerId);
if (manager2.name != null) {
manager.setName(name);
}
if (manager2.surname != null) {
manager.setSurname(surname);
}
if (manager2.password != null) {
manager.setPassword(password);
}
managerRepository.save(manager);
return manager.toJson();
}
Two managers in one method . It's look like difficul to understand which one should be saved into db
The second decision is to use Builder pattern(BP), but i don't know is it good practise to use BP with ORM and how to do it better?
Aucun commentaire:
Enregistrer un commentaire