/ / what to use session.beginTranscation lub session.getTranscation? - hibernacja, wiosna-mvc

do czego użyć session.beginTranscation lub session.getTranscation? - hibernacja, sprężyna-mvc

Używam Spring mvc i Hibernacji. Jestem zdezorientowany między beginTranscation i getTranscation. Używanie dowolnego kodu działa Ale chcę wiedzieć, który jest prawidłowy sposób.

Poniżej znajduje się mój kod z klasy Dao

        Session session = sessionFactory.getCurrentSession();
session.beginTransaction().begin();
executeQuery = session.createQuery(sql);
Employee emp = (Employee) executeQuery.uniqueResult();
session.beginTransaction().commit();

czy ktoś może mi powiedzieć, czego używać beginTranscation lub getTrancation?

Odpowiedzi:

1 dla odpowiedzi № 1

session.getTransaction (). begin () - zakłada, że ​​transakcja już istnieje (transakcja już została rozpoczęta) i wykorzysta ją.

session.beginTransaction () - sprawdzi, czy istnieje już transakcja, jeśli tak, nie utworzy nowej transakcji i użyje uruchomionej. Jeśli żadna transakcja jeszcze nie istnieje, utworzy nową.

Tak więc wyraźnie zależy od twoich potrzeb.

Bądź też ostrożny, jak dzwonisz sessionBeginTransaction() dwa razy, więc zmień kod na

Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
executeQuery = session.createQuery(sql);
Employee emp = (Employee) executeQuery.uniqueResult();
tx.commit();

I to session.beginTransaction().begin() połączenie jest równe session.beginTransaction()

Ogólnie, jak już skonfigurowałeś środowisko Spring, Spring ma potężne możliwości zarządzanie transakcjami , więc zamiast obsługiwać transakcje samodzielnie, trzymaj się tego, co oferuje środowisko, którego używasz. Przynajmniej możesz spróbować użyć programowego sposobu zarządzania transakcjami (np. TransactionTemplate)