У меня есть метод, который сохраняет древовидную структуру в нашей базе данных Postgres. Метод использует treeDao для изменения базы данных, которая, в свою очередь, использует JdbcTemplate для чтения и записи в базу данных.
@Transactional
public void saveTree(Node root) {
treeDao.deleteTableContents();
treeDao.saveTree(root);
}
Я бы хотел, чтобы этот метод был транзакцией, поэтому, если что-то пойдет не так с сохранением дерева, содержимое базовой таблицы не будет удалено (согласно первой строке метода).
Достаточно ли аннотировать метод @Transactional? Удостоверится ли это, что если какая-либо из операций SpringTemplate пойдет не так, таблица вернется в исходное состояние (т. Е. Содержимое не будет удалено)?
У меня нет опыта использования аннотации @Transactional, поэтому я не уверен, достаточно ли этого для выполнения работы. Если он выполняет свою работу, как он узнает, что я использую JdbcTemplate или даже сам JDBC ... как именно он работает?