Sobes.tech
Junior — Middle

İşlemsel olarak işaretlenmiş bir yöntem içinde, aynı zamanda işlemsel anotasyonla işaretlenmiş başka bir yöntem çağrılırsa sistem nasıl davranır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da, örneğin Spring'de @Transactional anotasyonu ile işlemler kullanılırken, bir transaksiyonel metodun içinde başka bir de transaksiyonel olarak işaretlenmiş metod çağrıldığında, davranış proxy tipi ve transaksiyon ayarlarına bağlıdır.

Varsayılan olarak, çağrı aynı sınıf içinde (dahili metod çağrısı) gerçekleşiyorsa, proxy bu çağrıyı yakalamaz ve yeni bir işlem oluşturulmaz — mevcut işlem (varsa) kullanılır.

Eğer çağrı dışarıdan (proxy aracılığıyla) gerçekleşiyorsa:

  • REQUIRED tipi propagation ile (varsayılan), içsel bir işlem oluşturulmaz, mevcut işlem kullanılır.
  • REQUIRES_NEW propagation ile yeni bir işlem oluşturulur ve mevcut durdurulur.

Bu nedenle, aynı sınıftaki başka bir transaksiyonel metoddan çağrıldığında, genellikle aynı işlem kullanılır ve iç içe anotasyon yeni bir işlem oluşturmaz.

İç metodun ayrı bir işlemde çalışması isteniyorsa, çağrı proxy üzerinden yapılmalıdır (örneğin, başka bir bean veya self-injection ile).