Два способа сделать это:
- Поместите аннотацию Spring @Transactional поверх вашего метода, внутри которого вы выполняете вставки / удаления
- Создание и управление транзакцией вручную
Рекомендуется первый способ.
Примеры:
Использование только Spring:
@Service
public class MyPersistenceService {
@Autowired
private MyRepository mytRepository;
@Transactional
public void myLogic() {
//perform all the inserts and deletes
}
}
Использование Hibernate с Spring:
@Component
public class MyRunner implements CommandLineRunner {
@PersistenceContext
private EntityManager entityManager;
@Override
@Transactional
public void run(String... args) throws Exception {
Book book = new Book();
book.setId(1L);
book.setAuthor("author");
book.setTitle("title");
entityManager.merge(book); //an insert statement
entityManager.remove(book); //a delete statement
}
}
Второй способ - очень грубый способ сделать это, так как вы уже используете Spring. Вот фрагмент кода для этого:
Session session = null;
Transaction tx = null;
try {
session = sessionFactory.openSession();
tx = session.beginTransaction();
//Your insert and delete statements
tx.commit();
}catch (Exception ex) {
ex.printStackTrace();
tx.rollback();
}
finally {
session.close();
}