Sobes.tech
Junior — Middle

Jak działa adnotacja @Transactional i jakie mechanizmy wykorzystuje do zapewnienia integralności transakcyjnej?

sobes.tech AI

Odpowiedź od AI

Adnotacja @Transactional w Java (zazwyczaj w Spring Framework) służy do oznaczania metod lub klas, które mają być wykonywane w ramach transakcji.

Zapewnia:

  • Automatyczne rozpoczęcie transakcji przy wejściu do metody.
  • Zatwierdzenie transakcji po pomyślnym zakończeniu metody.
  • Wycofanie transakcji w przypadku wystąpienia wyjątków.

Używane mechanizmy:

  • Proksy (dynamiczne lub CGLIB) przechwytują wywołania metod.
  • Menedżer transakcji (PlatformTransactionManager) zarządza cyklem życia transakcji.

Przykład:

@Service
public class UserService {
    @Transactional
    public void createUser(User user) {
        userRepository.save(user);
        // jeśli tutaj zostanie wyrzucony RuntimeException, transakcja zostanie wycofana
    }
}

W ten sposób @Transactional gwarantuje integralność danych, automatycznie zarządzając transakcjami bez konieczności pisania jawnego kodu do rozpoczęcia, zatwierdzenia lub wycofania.