Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

W powyższym przykładzie funkcja bez adnotacji @Transactional utworzy osobne transakcje dla każdej funkcji save, natomiast w funkcji oznaczonej @Transactional obie operacje będą działać na jednej tej samej transakcji.

 

Manualne zarządzanie transakcjami

Jeżeli potrzebujemy wykonać blok kodu wewnątrz aktywnej transakcji hibernate lub sharkowej oraz mieć dostęp do sesji i transakcji, to należy skorzystać z klasy TransactionWrapper.

 

Code Block
languagejava
titleWykonie operacji wewnątrz transakcji hibernate
TransactionWrapper.get().doInHibernateTransaction( ( session ) -> {
    QueryExecutor qe = ComponentFactory.getQueryExecutor();
    SQLQuery sql = qe.createSQLQuery( ... );
    ...
    sql.executeUpdate();
});

 

Code Block
languagejava
titleWykonie operacji wewnątrz transakcji sharkowej
TransactionWrapper.get().doInSharkTransaction( ( sharkTransaction ) -> {
    ActivityService activityService = ServiceFactory.getActivityService();
	Map<String, Object> activityContext = activityService.getActivityContext( processId, activityId );
	activityContext.put( "id_zmiennej", "nowa_wartość" );
	activityService.setActivityContext( processId, activityId, activityContext );
});

Nasz kod może również zwracać dowolny wynik.

Manualne zarządzanie transakcjami poniżej wersji 3.2.76

...