Где лучшее место для настройки родительского объекта? Другими словами, где лучшее место для объединения сущностей?
В контроллере найти родительский объект и установить для потомка, а затем сохранить?
@RestController
public class SomeController{
@Autowired
private SomeService someService;
@PostMapping("/parents/{parentEntityId}/childs")
public ResponseEntity<Void> save(@PathVariable("parentEntityId") Long parentEntityId, @RequestBody ChildDto childDto) {
Optional<ParentEntity> parentEntity = someService.findParentById(parentEntityId);
if (parentEntity.isPresent()) {
ChildEntity childEntity = childDtoMapper.fromDto(childDto);
childEntity.setParent(parentEntity.get());
someService.saveChild(childEntity);
return ResponseEntity.created(...).build();
}
throw new EntityNotFoundException("Parent entity not found!");
}
}
OR
В контроллере сопоставьте dto с сущностью, затем отправьте сущность и идентификатор родительской сущности в службу, затем найдите родительскую сущность по идентификатору и задайте для child и сохраните?
@RestController
public class SomeController {
@Autowired
private SomeService someService;
@PostMapping("/parents/{parentEntityId}/childs")
public ResponseEntity<Void> save(@PathVariable("parentEntityId") Long parentEntityId, @RequestBody ChildDto childDto) {
ChildEntity childEntity = childDtoMapper.fromDto(childDto);
someService.saveChild(parentEntityId, childEntity);
return ResponseEntity.created(...).build();
}
}
public class SomeServiceImpl {
@Autowired
private ParentEntityRepository parentEntityRepository;
@Autowired
private ChildEntityRepository childEntityRepository;
public ChildEntity saveChild(final long parentEntityId, final ChildEntity childEntity){
Optional<ParentEntity> parentEntity = parentEntityRepository.findById(parentEntityId);
if (parentEntity.isPresent()) {
childEntity.setParent(parentEntity.get());
childEntityRepository.save(childEntity);
return childEntity;
}
throw new EntityNotFoundException("Parent entity not found!");
}
}