public class MoneyTransferService { /** * @param fromAccountId уникален идентификатор на потребителя, който прехвърля средства * @param toAccountId уникален идентификатор на потребителя, на когото се прехвърлят средствата * @param amount сума на превода. Положително число */ @Transactional public void transferMoney(Long fromAccountId, Long toAccountId, BigDecimal amount) { if (amount.compareTo(BigDecimal.ZERO) <= 0) { throw new RuntimeException("Сумата трябва да е положителна"); } if (fromAccountId.equals(toAccountId)) { throw new RuntimeException("Сметката не може да е същата"); } Long firstId = Math.min(fromAccountId, toAccountId); Long secondId = Math.max(fromAccountId, toAccountId); Account first = accountRepository.findByIdForUpdate(firstId) .orElseThrow(() -> new RuntimeException("Сметка не е намерена")); Account second = accountRepository.findByIdForUpdate(secondId) .orElseThrow(() -> new RuntimeException("Сметка не е намерена")); Account from = fromAccountId.equals(firstId) ? first : second; Account to = fromAccountId.equals(firstId) ? second : first; if (from.getBalance().compareTo(amount) < 0) { throw new RuntimeException("Недостатъчен баланс"); } from.setBalance(from.getBalance().subtract(amount)); to.setBalance(to.getBalance().add(amount)); accountRepository.save(to); accountRepository.save(from); } } @Entity @Data public class Account { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private BigDecimal balance; }
Java
Как да реализираме обработката на изключения в приложения, използващи Spring Framework?
Как е организирана съвместната работа във вашия екип и какви процеси се използват за изпълнение на задачите?
Как се различават HashMap и ConcurrentHashMap в Java по функционалност и използване в многопоточни сегменти?
Как правилно да промените обект, за да може да се използва в колекцията HashMap?
Можеш ли да дадеш пример за идеята за обръщане на зависимостите в проектирането на софтуерни системи?
Как беше формулиран последният SQL-заявка, който използвахте във вашия проект?
Можете ли да обясните какво представляват обектите, които не могат да бъдат променяни след създаването им?
Четири състояния на същностите в Hibernate — обяснете как това е свързано с необходимостта от извикване на save().
В кои ситуации е възможна загуба на данни в Kafka?
Осигурява ли Kafka сигурност при съхранението и преноса на данни?
Работили ли сте някога със системи, които осигуряват висок ниво на отказоустойчивост и устойчивост към сривове?
Имали ли сте практически опит със Spring Boot?
Какви са основните принципи на дизайна на услуги за минимизиране на загубата на данни или ресурси?
Как механизмите за събиране на отпадъци определят обектите, които трябва да бъдат унищожени?
Допустимо ли внедряването на обработка на изключения директно в бизнес логиката на приложението?
Какви са предимствата и недостатъците на съхраняването на данни за състоянието на сървъра?
Кои фактори не влияят на работата на HashMap?
Използвали ли сте преобразуване или оптимизация на SQL заявки в последния си проект?
Какви са предимствата и недостатъците на релационните системи за управление на бази данни?