Próbowałem uczyć się wiosny i hibernacji, a użyłem wielu przykładów w sieci, aby stworzyć ładną aplikację. Uświadomiłem sobie jednak, że Spring wspiera zarządzanie transakcjami. W mojej aplikacji na wiosnę po prostu zrobiłem to, co chciałem, bezpośrednio do hibernacji. Czy istnieje powód/korzyść, dlaczego ludzie korzystali z usług w zakresie zarządzania transakcjami/db w Spring?Korzyści z używania zarządzania transakcjami sprężystymi a używaniem hibernacji
Odpowiedz
Prawdziwe zalety to:
Lekki składnia deklaratywny. Porównaj:
public void saveEmployee(Employee e) { Session s = sf.getCurrentSession(); s.getTransaction().begin(); s.save(e); s.getTransaction().commit(); }
i
@Transactional public void saveEmployee(Employee e) { sf.getCurrentSession().save(e); }
propagację transakcji elastyczny. Wyobraź sobie, że teraz musisz wykonać tę metodę
saveEmployee()
jako część złożonej transakcji.W przypadku ręcznego zarządzania transakcjami należy zmienić metodę, ponieważ zarządzanie transakcjami jest zakodowane na stałe. Ze sprężyną, propagacja transakcja działa płynnie:@Transactional public void hireEmployee(Employee e) { dao.saveEmployee(e); doOtherStuffInTheSameTransaction(e); }
automatyczne wycofanie w przypadku wyjątków
Chyba powinienem zapytać, jaka jest korzyść z używania hibernacji ze sprężyną? Czy Hibernate nadal przynosi coś do stołu? –
@John: W porównaniu do wiosny bez hibernacji lub hibernacji bez wiosny? – axtavt
Próbuję zrozumieć, dlaczego ktoś użyłby Hibernate, gdyby mieli Spring. Wygląda na to, że Hibernate dużo ich nie kupuje. A może brakuje mi czegoś. –
spring's reference doc wspomina bardzo wyraźnie
The Spring Framework zapewnia spójnego abstrakcji dla transakcji zarządzania, który zapewnia następujące korzyści:
- zapewnia spójny model programowania w różnych transakcji Interfejsy API, takie jak JTA, JDBC, Hibernate, JPA i JDO.
- Obsługuje deklaratywne zarządzanie transakcjami.
- Udostępnia prostszy interfejs API do automatyzacji transakcji niż szereg złożonych transakcji API takich jak JTA.
- Bardzo dobrze integruje się z różnymi abstrakcjami dostępu do danych Spring.
zapewnia spójny model programowania w różnych transakcji API, takich jak JTA, JDBC, Hibernate, JPA i JDO.
Powiedzmy, że obecnie korzystasz z funkcji hibernacji w celu zarządzania transakcjami, a czasem na drodze, którą chcesz przełączyć na JDO. Wymaga to zmiany kodu zarządzania transakcjami. Jeśli używasz Springa, wtedy nie ma zmian.
Obsługuje deklaratywne zarządzanie transakcjami.
podobne do EJB
zapewnia prostsze API do programowego zarządzania transakcjami niż liczba złożonych transakcji API, takich jak JTA.
JTA i JDBC mają różne interfejsy API do zarządzania transakcjami. Spring streszcza to poprzez zapewnienie jednolitego API.
Tak, ale w rzeczywistości nie jestem pewien, co to oznacza. Czy standardową praktyką jest używanie zarządzania transakcjami Spring przez Hibernaty? Czy nie tracisz niektórych korzyści z używania hibernacji w ten sposób? –
@John Baker - Nie, nie jesteś. Spring HibernateTransactionManager (nieoczekiwanie) wykorzystuje funkcje transakcji Hibernate, mając jednocześnie na uwadze zalety ujednoliconej abstrakcji transakcji Spring. Jeśli używasz Springa i korzystasz z transakcji, powinieneś użyć transakcji Spring. – OrangeDog
- 1. Korzyści z używania konstruktora?
- 2. node.js + Postgres zarządzania transakcjami w bazie
- 3. Automatyczne zarządzanie transakcjami hibernacji ze sprężyną?
- 4. Korzyści z używania podmodulatorów Bower over Git
- 5. Jakieś korzyści z używania CHAR nad VARCHAR?
- 6. Problemy z transakcjami Grails
- 7. Wiosna 3.1: Non-XML odpowiednik zarządzania transakcjami z adnotacjami
- 8. Różnica między "używaniem" a określaniem zakresu?
- 9. Korzyści z używania Object.hasOwnProperty vs testowania, jeśli właściwość jest niezdefiniowana.
- 10. Korzyści z używania klas abstrakcyjnych w stosunku do zwykłej klasy
- 11. Jakieś korzyści z używania Liquibase do migracji baz danych?
- 12. Korzyści z używania attr() nad addClass w jquery
- 13. Korzyści z używania obiektu WaitForSingleObject podczas sprawdzania identyfikatora procesu
- 14. Dziwny klucz Redisa z danymi sprężystymi Jedis
- 15. Wiosenne zautomatyzowane zarządzanie transakcjami?
- 16. Korzyści z używania BufferBlock <T> w sieciach przepływów danych
- 17. Testy jednostkowe z transakcjami ręcznymi i transakcjami wielowarstwowymi
- 18. Korzyści z x87 przez SSE
- 19. Czy są jakieś korzyści związane z wydajnością, używając parametru ReadOnly w trybie hibernacji?
- 20. Różnica między używaniem UINavigationController a UINavigationBar
- 21. Samouczki dotyczące używania hibernacji w systemie Android?
- 22. Jakie są różnice między typedef a używaniem?
- 23. Różnica między używaniem metody getConnection() a używaniem puli bezpośrednio w pliku node.js z modułem node-mysql?
- 24. Problemy z transakcjami PayPal MECL
- 25. Korzyści z asertywnego programowania
- 26. Problem z wieloma transakcjami Dotyczy:
- 27. Problemy z transakcjami PHP PDO
- 28. Korzyści z generycznych konstruktorów
- 29. Wiosenne zarządzanie transakcjami nie działa
- 30. Implikacje związane z używaniem GADT
Używasz dwufazowy zobowiązuje się do bazy danych, a także gdzie indziej - Korzystanie z wiosny. w innym razie wybierz ten, którego chcesz użyć. –
Co to jest zatwierdzenie dwufazowe, jeśli mogę zapytać? –