Senior
@Transactional ilə metod niyə tranzaksiya yaratmaya bilər?
sobes.tech Süni İntellekt
AI-dan cavab
@Transactional qeydlə işarələnmiş metod bir neçə səbəbdən tranzaksiya yaratmaya bilər:
- Əgər metod birbaşa eyni sinif daxilində çağırılırsa (proxy olmadan), Spring tranzaksiyanı tətbiq etməyəcək, çünki tranzaksiyalar proxy vasitəsilə işləyir.
- Əgər Spring konfiqurasiyası tranzaksiyaları dəstəkləmirsə və ya qeydlər tanınmırsa.
- Əgər metod
privatevə yafinalolaraq işarələnibsə, proxy onu üzərinə yaza bilməz və tranzaksiya yaratmaz. - Əgər artıq aktiv tranzaksiya mövcuddursa və cari metod propagation ilə konfiqurasiya olunubsa, yeni tranzaksiya yaratmaz.
Sinif daxilində çağırış nümunəsi:
@Service
public class MyService {
@Transactional
public void transactionalMethod() {
// kod
}
public void caller() {
transactionalMethod(); // çağırış eyni sinif daxilindədirsə, tranzaksiya yaradılmayacaq
}
}