Если вы поместите @Transactional поверх метода, каждый вызов метода внутри этого доступа к базе данных (но также каждый вызов метода внутри других методов @Transactional - зависит от того, как вы его настроили) использует только одно соединение с базой данных.Это означает, что вы можете откатить все обновления / вставки, которые произошли в транзакции.Если одно из обновлений / вставок выдает исключение, вы можете откатить все обновления / вставки в транзакции, которые произошли до этого исключения -> целостность данных
Проще говоря, если у вас есть метод @Transactional, который, например, используетSpring JdbcTemplate для выполнения некоторых вставок или обновлений (независимо от того, сколько раз) они будут транзакционными, с точки зрения того, если какое-то исключение выдается или что-то, откат применяется - вы должны прочитать документацию по деталям.
если вы используете @Transactional (распространение = Propagation.REQUIRED) для более чем одного метода, если вы затем вызовете эти методы, все вставки / обновления в базу данных с помощью этих методов будут частью одной большой транзакции.
ВАЖНО: как я упоминал в комментарии, вы не должны вызывать эти методы из того же класса, где они объявлены.Причина в том, что все это основано на вызовах прокси-сервера AOP, что происходит, только если вы создаете экземпляр объекта DAO и вызываете методы @Transactional для объекта.В противном случае это не сработает, и вы, вероятно, не поймете, почему.