Junior — Middle
90
Как работи анотацията @Transactional и какви механизми използва за осигуряване на транзакционната цялост?
Отговор от AI
sobes.tech AI
Анотацията @Transactional в Java (обикновено в Spring Framework) се използва за обозначаване на методи или класове, които трябва да се изпълняват в рамките на транзакция.
Тя осигурява:
- Автоматично започване на транзакцията при влизане в метода.
- Потвърждаване на транзакцията при успешно завършване.
- Връщане на транзакцията при възникване на изключения.
Механизмите, които се използват, са:
- Прокси (динамични или CGLIB) прихващат извикванията на методи.
- Мениджърът на транзакции (
PlatformTransactionManager) управлява жизнения цикъл на транзакцията.
Пример:
@Service
public class UserService {
@Transactional
public void createUser(User user) {
userRepository.save(user);
// ако тук бъде хвърлено RuntimeException, транзакцията ще бъде върната
}
}
По този начин, @Transactional гарантира цялостта на данните, автоматично управлявайки транзакциите без необходимост от писане на явен код за започване, потвърждаване или връщане.