Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Wstęp

Zarządzanie transakcjami jest możliwe za pomocą adnotacji @Transactonal, @UserTransactional, oraz @SharkTransactional. Adnotacje te możemy używać tylko w klasach zarządzanych przez kontekst aplikacji. 

  • @Transactional - tworzy transakcję Hibernate
  • @SharkTransactional - tworzy transakcję SharkTransaction
  • @UserTransactional - tworzy transakcję UserTransaction

Dobre praktyki

Zaleca się stosowanie adnotacji do zarządzania transakcjami w klasach oznaczonych adnotacją @Sevice

 

Przykłady użycia

Wykonanie kilku operacj w jednej transakcji
@Service
public class CustomeServiceImpl
    implements CustomService
{
	@Autowired
	private PositionService ps;
	private OrganziationalUnitService ous;
 
	@Transactional
	public void addPositionAndOu(){
		Position p=new Position();
        p.setName( "name" );
        p.setSymbol( "symbol" );
        OrganizationalUnit ou=new OrganizationalUnit();
        ou.setName( "name" );
        ou.setSymbol( "symbol" );
        ps.save(p);
        ous.save( ou );
	}
 
	public void addPositionAndOuNonTransactional(){
		Position p=new Position();
        p.setName( "name" );
        p.setSymbol( "symbol" );
        OrganizationalUnit ou=new OrganizationalUnit();
        ou.setName( "name" );
        ou.setSymbol( "symbol" );
        ps.save(p);
        ous.save( ou );
	}
}

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.

Przydatne zasoby:

 

 

  • No labels