• Как обеспечить производительность в многопоточной среде?

    @aiwan9 Автор вопроса
    Приношу свои извинения за путаницу. Классы OrderService, CompanyService и есть классы работы с базой.
    @Transactional(rollbackFor = {ServiceException.class, NullPointerException.class, PSQLException.class})
    @Service(value = "orderService")
    public class OrderService {
       // code
    }
    


    Данные о балансе компании хранятся в базе. Чтобы получить актуальный баланс — нужно вытащить ее из базы. Проблема в том, что я не понимал, как сделать «захват мьютекса» этого объекта, ведь если вытащить компанию из базы еще раз, то это уже будет другой объект. gvsmirnov предлагает завести поле
    ConcurrentMap<Long, Lock> companyLocks
    , где для каждого id компании будет храниться отельный Lock. И насколько я понимаю — вы предлагаете то же самое.