То, что вы описали, это именно то, для чего предназначены транзакции.Идея состоит в том, что вы группируете операции базы данных в одну транзакцию, и либо все они успешны, либо все они терпят неудачу.Таким образом, ваша база данных не может оказаться в промежуточном и недействительном состоянии.
Управление транзакциями - это обширная и часто довольно сложная область, и способ ее настройки зависит от настроек вашего конкретного приложения.
Поскольку вы упомянули только Hibernate, я бы рекомендовал начать с чтения этой главы документации.Если вы используете Spring для разграничения границ транзакций, я бы рекомендовал вам прочитать этот раздел их документации.
Стоит отметить, что вы не можете отправлять SQL в свою базу данных вне транзакции.Здесь обсуждается .