Sobes.tech
Junior — Middle

Kuidas töötab @Transactional annotatsioon ja milliseid mehhanisme see kasutab transaktsiooni terviklikkuse tagamiseks?

sobes.tech AI

Vastus AI-lt

Java-s (@Transactional annotatsioon tavaliselt Spring Frameworkis) kasutatakse meetodite või klasside märkimiseks, mis peavad toimuma transaktsiooni raames.

See tagab:

  • Automaatse transaktsiooni algatamise meetodi sisenemisel.
  • Transaktsiooni kinnitamise edukalt lõpetamisel.
  • Transaktsiooni tagasivõtmise erandite korral.

Kasutatavad mehhanismid:

  • Proxy-d (dünaamilised või CGLIB) haaravad meetodite kutsed.
  • Transaktsiooni haldur (PlatformTransactionManager) haldab transaktsiooni elutsüklit.

Näide:

@Service
public class UserService {
    @Transactional
    public void createUser(User user) {
        userRepository.save(user);
        // kui siin visatakse RuntimeException, transaktsioon tühistatakse
    }
}

Nii tagab @Transactional andmete terviklikkuse, automaatselt hallates transaktsioone ilma, et oleks vaja kirjutada selget koodi algatamiseks, kinnitamiseks või tühistamiseks.