Достаточно ли аннотации @Transactional для создания транзакции для операций JDBC / SpringTemplate? - PullRequest
0 голосов
/ 26 октября 2018

У меня есть метод, который сохраняет древовидную структуру в нашей базе данных Postgres. Метод использует treeDao для изменения базы данных, которая, в свою очередь, использует JdbcTemplate для чтения и записи в базу данных.

@Transactional
public void saveTree(Node root) {

    treeDao.deleteTableContents();

    treeDao.saveTree(root);
}

Я бы хотел, чтобы этот метод был транзакцией, поэтому, если что-то пойдет не так с сохранением дерева, содержимое базовой таблицы не будет удалено (согласно первой строке метода).

Достаточно ли аннотировать метод @Transactional? Удостоверится ли это, что если какая-либо из операций SpringTemplate пойдет не так, таблица вернется в исходное состояние (т. Е. Содержимое не будет удалено)?

У меня нет опыта использования аннотации @Transactional, поэтому я не уверен, достаточно ли этого для выполнения работы. Если он выполняет свою работу, как он узнает, что я использую JdbcTemplate или даже сам JDBC ... как именно он работает?

...