Jaka jest różnica między JTA a transakcją lokalną?Jaka jest różnica między JTA a transakcją lokalną?
Przykład pokazujący, kiedy używać JTA i kiedy używać transakcji lokalnej, byłby świetny.
Jaka jest różnica między JTA a transakcją lokalną?Jaka jest różnica między JTA a transakcją lokalną?
Przykład pokazujący, kiedy używać JTA i kiedy używać transakcji lokalnej, byłby świetny.
JTA
to ogólny interfejs API do zarządzania transakcjami w Javie. Pozwala na uruchamianie, zatwierdzanie i wycofywanie transakcji w sposób neutralny dla zasobów. Status transakcji jest zwykle przechowywany w protokole TLS (Thread Local Storage) i może być propagowany do innych metod w stosie wywołań bez potrzeby podawania jakiegoś jawnego obiektu kontekstowego. Zasoby transakcyjne mogą dołączyć do trwającej transakcji. Jeśli w takiej transakcji uczestniczy więcej niż jeden zasób, przynajmniej jeden z nich musi być tak zwanym zasobem XA.
A resource local transaction
to transakcja, którą masz z określonym pojedynczym zasobem przy użyciu jego własnego interfejsu API. Taka transakcja zazwyczaj nie rozprzestrzenia się na inne metody w stosie wywołań i wymagane jest przekazanie jakiegoś jawnego obiektu kontekstowego. W większości transakcji lokalnych zasobów nie można mieć wielu zasobów uczestniczących w tej samej transakcji.
Można użyć lokalnej transakcji zasobów, na przykład niskiego poziomu kodu JDBC w Java SE. Tutaj obiekt kontekstu jest wyrażany przez instancję java.sql.Connection
. Innymi przykładami lokalnych transakcji na temat zasobów są programiści tworzący aplikacje korporacyjne około 2002 roku. Ponieważ menedżerowie transakcji (używani przez JTA) byli kosztowni, zamknięci i skomplikowani w konfigurowaniu w tym okresie, ludzie poszli z tańszymi i łatwiejszymi do uzyskania lokalnymi wariantami zasobów.
Można użyć transakcji JTA zasadniczo w każdym innym scenariuszu. Bardzo proste, małe, darmowe serwery open-source, takie jak TomEE (25 MB) lub GlassFish (35 MB), mają obsługę JTA od razu po wyjęciu z pudełka. Nie ma nic do skonfigurowania i po prostu działają.
Wreszcie, technologie takie jak EJB i Spring sprawiają, że nawet JTA jest łatwiejszy w użyciu, oferując declarative transactions
. W większości przypadków zaleca się ich stosowanie, ponieważ są one łatwiejsze, czystsze i mniej podatne na błędy. Zarówno EJB, jak i Spring mogą używać JTA pod kołdrą.
Java Transaction API (JTA) to jeden z interfejsów Java Enterprise Edition (Java EE) umożliwiających wykonywanie transakcji rozproszonych w wielu zasobach XA w środowisku Java.
aplikacji J2EE zawiera suppoart fot DT przez 2 specyfikacji
JTA ---> implementację Javy transakcja API.highe poziomie i jest zawsze włączona
WST ---> Java Transaction Service.
Typ transakcji powinien mieć wartość "RESOURCE_LOCAL" dla aplikacji Java SE i "JTA" dla aplikacji Java EE. "RESOURCE_LOCAL" może działać poprawnie w przypadku niektórych aplikacji internetowych wdrożonych na serwerze Tomcat, ale może powodować problemy podczas uruchamiania aplikacji w środowisku Glassfish.
Jeśli pracujesz na transakcjach rozproszonych, musisz użyć "JTA" jako swojego menedżera transakcji.
+1 za wyjaśnienie historii i rozwoju zastosowań JTA (EJB, Spring itp.). – Marco