Sobes.tech
Senior

Какво предоставя анотацията @Transactional и какви са нейните атрибути?

sobes.tech AI

Отговор от AI

Коментарът @Transactional в Java се използва за управление на транзакции на ниво методи или класове. Той гарантира, че всички операции в рамките на транзакцията ще бъдат изпълнени атомарно: или всички успешно, или при грешка ще се извърши rollback.

Основни атрибути на @Transactional:

  • propagation — определя поведението на транзакцията при извикване от друг транзакционен контекст (например, REQUIRED, REQUIRES_NEW).
  • isolation — ниво на изолация на транзакцията (READ_COMMITTED, SERIALIZABLE и др.), влияе върху видимостта на данните.
  • timeout — време за изчакване за приключване на транзакцията, след което тя ще бъде прекратена.
  • readOnly — указва, че транзакцията е само за четене, което може да оптимизира работата с базата данни.
  • rollbackFor / noRollbackFor — класове на изключения, при които транзакцията ще бъде върната или не.

Пример:

@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, timeout = 30, readOnly = false)
public void updateData() {
    // бизнес логика
}