Junior — Middle
91
Чӣ тавр кор мекунад таърифномаи @Transactional ва кадом механизмҳоро барои таъмин намудани тамомиҳолии транзаксия истифода мебарад?
Ҷавоб аз AI
sobes.tech AI
Тег @Transactional дар Java (одатан дар Spring Framework) барои нишон додани методҳо ё синфҳо истифода мешавад, ки бояд дар доираи транзаксия иҷро шаванд.
Он кафолат медиҳад:
- Ифтитоҳи автоматии транзаксия ҳангоми ворид шудан ба метод.
- Тасдиқи транзаксия ҳангоми анҷоми муваффақона.
- Баргардонидани транзаксия дар ҳолати пайдоиши истисноҳо.
Механизмҳое, ки истифода мешаванд:
- Proxy-ҳо (динамикӣ ё CGLIB) занҷирҳои методҳоро мегиранд.
- Менеджери транзаксия (
PlatformTransactionManager) давраи ҳаёти транзаксияро идора мекунад.
Масалан:
@Service
public class UserService {
@Transactional
public void createUser(User user) {
userRepository.save(user);
// агар дар ин ҷо RuntimeException баромад кунад, транзаксия баргардонида мешавад
}
}
Бинобар ин, @Transactional кафолат медиҳад, ки маълумотҳо муттаҳиданд, ва транзаксияҳоро автоматӣ идора мекунад, бе ниёз ба навиштани коди ошкор барои оғоз, тасдиқ ё баргардондани транзаксияҳо.