Sobes.tech
Senior

@Transactional ile metod neden işlem oluşturmayabilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

@Transactional anotasyonuna sahip bir yöntem birkaç nedenle işlem oluşturmayabilir:

  • Yöntem doğrudan aynı sınıf içinde çağrılıyorsa (proxy olmadan), Spring işlemi uygulamaz çünkü işlemler proxyler aracılığıyla çalışır.
  • Spring yapılandırması işlem desteği içermiyorsa veya anotasyon tanınmıyorsa.
  • Yöntem private veya final olarak işaretlenmişse, proxy işlemi oluşturmak için onu geçersiz kılabilir.
  • Zaten aktif bir işlem varsa ve mevcut yöntem propagation ile yapılandırılmışsa, yeni işlem oluşturmaz.

Sınıf içi çağrı ile ilgili bir örnek:

@Service
public class MyService {
    @Transactional
    public void transactionalMethod() {
        // kod
    }

    public void caller() {
        transactionalMethod(); // aynı sınıf içinden çağrıysa işlem oluşturulmaz
    }
}