В моем приложении spring-hibernate, в котором также есть active-mq, несколько потребителей одновременно получают доступ к одному из методов, который обеспечивает постоянство регистрации объектов в mysql db для нас. Из-за параллельного доступа к этому методу кодировка, которую я в нем закодировал, в некоторых случаях дает сбой. Я делюсь логикой ниже:
// check the current sourceId whether is included or not in log table
List<MyLogObject> logs = logService.findBySourceId(currentSourceId);
if(logs.size() == 0){
logService.persist(currentLogObject);
}
Как вы видите, если несколько потребителей обращаются к этому блоку кода одновременно, размер журнала должен возвращать 0 для них, и, таким образом, они сохраняют один и тот же объект дважды или более.
Как мне избежать многократного сохранения объекта в случае active-mq и многократного использования потребителем.
Возможно ли добиться этого с помощью функции синхронизации Java?
Заранее спасибо.