Changes between Version 1 and Version 2 of Transactions


Ignore:
Timestamp:
09/04/25 04:52:21 (42 hours ago)
Author:
222003
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Transactions

    v1 v2  
    3232        payment.setPaymentDate(LocalDate.now());
    3333        payment.setAmount(finalAmount);
    34         //payment.setStatus("во тек");
     34        payment.setStatus("во тек");
    3535        paymentRepo.save(payment);
    3636
     
    9292        return order;
    9393    }
     94
     95
    9496}}}
     97
     98Методот checkout е транзакциски метод за атомско креирање/поврзување на плаќањето, нарачката, и корекциите на залихи, кој врши промена на состојва на 4 различни ентитета. \\
     99Кодот пресметува цена според опционален попуст (со клуб-картичка), отвора плаѓање „во тек“, ја гради нарачката за секој брендиран лек од кошничката, ги намалува залихите \\
     100по објектите и на крај го финализира плаќањето и ја празни кошничката.
     101
     102Транзакција обезбедува да нема ситуација во која залихата е намалена без валидна нарачка или плаќање, бидејќи секој неуспех фрла исклучок што иницира ROLLBACK.
     103
     104* rollbackFor = Exception.class осигурува Rollback на проверени исклучоци, не само на runtime, за да нема полузавршени нарачки или плаќања.
     105* isolation = READ_COMMITED - забранува dirty reads за време на паралелни операции, ова е важно при намалување на залихата од брендирани лекови.
     106* timeout = 30 - прекинува долги транзакции за да спречи предолко или бесконечно извршеување на методот кој можеби има грешка.
     107
     108По успех на транзакцијата, се прави COMMIT по што промените остануваат трајни.
    95109
    96110=== 2. Зачувување на брендиран лек ===