у нас есть три таблицы Люди (идентификатор, имя), Регистрации (идентификатор, p_id, sub_id, sem, дата), Субъекты (идентификатор, имя, инструктор)... Я хочу знать, какой слой является правильным для написания логики для сохранения списка Регистрация объектов в БД? Я имею в виду, что в настоящее время у меня есть следующий код в классе ResitrationController.
@RequestMapping(..)
public String addRegistrations(@RequestParam(value="personId", required=true) int personId, @RequestParam(value="subjectIdList", required=true) List<Integer> subjectIdList){
List<Registrations> registrationList = new ArrayList<Registrations>();
for(int subjectId : subjectIdList){
Registration registration = new Registration();
registration.setSem("fall-11");
registration.setDate(new Date());
registration.setPerson(personService.getPersonById(personId));
registration.setSubject(subjectService.getSubjectById(subjectId));
registrationList.add(registration);
}
registrationService.addRegistrations(registrationList);
}
Метод addRegistration службы RegistrationService просто вызывает тот же метод в RegistrationDao RegistraionService(){ @Autowired REgistraionDao regDao;
@Transactional
addRegistration(registrationList){
regDao.addRegistration(registrationList);
}
}
RegistrationDao(){
@Autowired SessionFactory sessionFactory;
addRegistration(registrationList){
for(Registration registration: registrationList){
sessionFactory.getCurrentSession().save(registration);
}
}
}
Я хочу знать, правильно ли использовать эту логику в методе контроллера или перенести ее в другое место? Я действительно хочу отправить список регистраций методу RegistrationService, потому что я хотел бы, чтобы вся транзакция откатилась, даже если один из объектов не сохраняется.. спасибо