Sobes.tech
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 кафолат медиҳад, ки маълумотҳо муттаҳиданд, ва транзаксияҳоро автоматӣ идора мекунад, бе ниёз ба навиштани коди ошкор барои оғоз, тасдиқ ё баргардондани транзаксияҳо.