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.