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. 

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

 

Przykłady użycia

@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: