Tüm veritabanı ifadeleri, işlem sınırlarını açıkça belirtmediğimizde bile (BEGIN / COMMIT / ROLLBACK) fiziksel bir işlem bağlamında yürütülür .
İşlem sınırlarını açıkça belirtmezseniz, her bir ifadenin ayrı bir işlemde ( autocommit
mod) yürütülmesi gerekecektir . Ortamınız iş parçacığı başına bağlantıyla başa çıkamıyorsa, bu durum ifade başına bir bağlantının açılıp kapanmasına bile yol açabilir.
Bir hizmetin @Transactional
, tüm işlem süresi boyunca size tek bir bağlantı sağlayacağını ve tüm ifadelerin bu tek izolasyon bağlantısını kullanacağını bildirirsiniz. Bu, ilk etapta açık işlemleri kullanmamaktan çok daha iyidir.
Büyük uygulamalarda, çok sayıda eşzamanlı isteğiniz olabilir ve veritabanı bağlantısı edinme isteği oranını düşürmek , genel uygulama performansınızı kesinlikle artıracaktır.
JPA, okuma işlemlerinde işlemleri zorunlu kılmaz. İşlem bağlamını başlatmayı unutmanız durumunda, yalnızca yazma işlemleri işlem gerektiren bir istisna atar. Bununla birlikte, salt okunur işlemler için bile işlem sınırlarını beyan etmek her zaman daha iyidir ( @Transactional
Bahar'da, büyük bir performans avantajı sağlayan salt okunur işlemleri işaretlemenize izin verir).