Sobes.tech
Junior — Middle

Můžete vysvětlit, co se rozumí úrovněmi propagace při správě transakcí?

sobes.tech AI

Odpověď od AI

Úrovně propagace v řízení transakcí určují, jak se chová transakce při volání metod, které mohou být také transakční. Je důležité pochopit, zda metoda použije existující transakci, vytvoří novou nebo bude fungovat bez transakce.

Hlavní úrovně propagace ve Springu (Java):

  • REQUIRED (výchozí): pokud existuje aktuální transakce, metoda se k ní připojí, jinak se vytvoří nová.
  • REQUIRES_NEW: vždy vytvoří novou transakci, současná (pokud existuje) je pozastavena.
  • SUPPORTS: pokud existuje transakce, metoda v ní pracuje, jinak bez transakce.
  • NOT_SUPPORTED: metoda se vždy provádí bez transakce, současná transakce je pozastavena.
  • MANDATORY: metoda musí být provedena v existující transakci, jinak je vyhozena výjimka.
  • NEVER: metoda by neměla být provedena v transakci, jinak je vyhozena výjimka.
  • NESTED: pokud existuje transakce, je vytvořena vnořená (savepoint) transakce, jinak nová.

Příklad:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveData() {
    // tato metoda je vždy v nové transakci
}