Sobes.tech
Junior — Middle

Wyjaśnij zasadę działania adnotacji @Transactional i jej rolę w zarządzaniu transakcjami w bazie danych.

sobes.tech AI

Odpowiedź od AI

Adnotacja @Transactional w Javie (zazwyczaj w Spring Framework) służy do zarządzania transakcjami bazy danych na poziomie metod lub klas.

Zasada działania:

  • Po wywołaniu metody z @Transactional tworzona jest nowa transakcja lub używana jest istniejąca.
  • Wszystkie operacje na bazie danych wewnątrz tej metody są wykonywane w ramach tej transakcji.
  • Jeśli metoda zakończy się pomyślnie, transakcja jest zatwierdzana (zmiany są zapisywane).
  • Jeśli wystąpi wyjątek (zazwyczaj unchecked), transakcja jest wycofywana, a wszystkie zmiany cofnięte.

To pozwala zagwarantować integralność danych i spójność stanu bazy, szczególnie przy wykonywaniu wielu powiązanych operacji.

Przykład:

@Service
public class UserService {

    @Transactional
    public void createUserAndProfile(User user, Profile profile) {
        userRepository.save(user);
        profileRepository.save(profile);
        // Jeśli tutaj wystąpi wyjątek, oba zapisy zostaną cofnięte
    }
}

W ten sposób @Transactional upraszcza zarządzanie transakcjami i pomaga unikać błędów związanych z częściowym wykonaniem operacji.