Возник вопрос на счет отката транзакций, допустим в сервлете. Допустим, есть следующая ситуация:
doPost(args){
DaoFactory daoFactory = DaoFactory.getInstance();
UserDao userDao = daoFactory.getUserDao();
userDao.addNewUserToDB(user);
CarDao carDao = daoFactory.getCarDao();
carDao.addNewCarToDB(car);
}
Теперь сам вопрос. Допустим, мы отловим исключение при добавлении автомобиля. И нам нельзя допустить, чтобы добавился пользователь без добавления автомобиля. Как откатить весь метод?
Код не настоящий, если кто не понял, просто что-то типо псевдо-кода.
Вы можете использовать BMT в JPA для маркировки транзакции. Или же вынести код отдельный бин к которому применить CMT. He нужно писать весь код в сервлете, поскольку он не может управлять транзакциями.
В Spring есть два способа формирования транзакций, либо с помощью аннотаций, либо рукописно(возможно с помощью AOP реализовать). А в чистой Java можно сделать выше абстракцию(TransactionManager) для всех сервисов и там реализовать откат или выполнение транзакций.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости