При каких условиях транзакция Spring будет откатана (rollback)?
Ответ:
1. Если выброшеноuncheckedисключение (наследник RuntimeException или Error).
2. Если выброшеноcheckedисключение, указанное в аннотации@Transactionalс параметром rollbackFor.@Transactional(rollbackFor = { IOException.class })
Примечание: Checked исключения (например, IOException) по умолчанию не вызывают роллбэк, поэтому их нужно явно указывать через параметр rollbackFor.