Birisi, bir fazlı ve iki fazlı işlem arasındaki farkı açıklayabilir. Anladığı kadarıyla, tek aşamalı taahhüt uygulama sunucusu (Hizmet yöntemi -> EntityManager) sırasında taahhüdünü temsil eder ve XA işlemi, veritabanına (Service method -> EntityManager -> DB) kadar aynı işlemdir ve sırayla kullanılır. Genel işlemi doğru şekilde geri almak için Öyleyse neden XA sürücülerini varsayılan olarak kullanmıyoruz? Bu sadece performans endişesi mi? Lütfen yanılıyorsam beni düzeltin.Bir fazlı ve iki fazlı (XA) işlem arasındaki gerçek fark
cevap
Bu fark, tek fazlı bir işlemin genellikle tek bir sistemde veya veritabanında kullanılmasıdır; iki fazlı işlem ise birden çok DB'yi veya sistemi kapsayan dağıtılmış işlemler için kullanılır. Beni için size basit bir örnek göstereyim her
Tek fazlı işlemek
BEGIN
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00);
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00);
COMMIT;
Bu PL/SQL yazılmış klasik atom işlem (Java EE dünya için de işlem olabilir EJB yöntemi hayal) 'dir Tüm eylemlerin gerçekleştirildiği ve işlemin ya da geri almanın yapıldığı tek bir aşama vardır.
İki fazlı Şimdi farklı makinelerde farklı sistemlerle ilgileniyor
//pseodocode
BEGIN
UPDATE db1; //updates DB on another machine
UPDATE someCloudStorage; //update something on the cloud
INSERT INTO SomeTable VALUES(...);
COMMIT;
işlemek ancak (o işlem dağıtılan bu yüzden) hepsine başarıyla yazmak veya başarısız olmasını istiyorum. Yani burada Two-phase commit protocol geliyor. Temel olarak işlem yöneticisi "taahhüt için hazırla" mesajını yayınlar ve her makineden Tamam yanıtını bekler. Herkes "tamam" diyorsa, her şey işlenir - eğer değilse, tüm işlemler geri alınır.
Java'da XA işlemlerini kullanmak istiyorsanız, XA desteğine (ve düzgün yapılandırılmış XA veri kaynağına) sahip bir JDBC sürücüsüne ihtiyacınız olacağını unutmayın.
Çok iyi bir açıklama. Şimdi açık görünüyor! Teşekkürler! – sidlejinks
Bir şey değil, yardım ettiğine sevindim :-) –