Поток Безопасный Сеанс Бин - PullRequest
0 голосов
/ 03 июля 2011

Интересно, как лучше сделать поток обновления базы данных безопасным.

Я звоню сессионному компоненту без состояния

public void addReservation (Резервирование резервирования)

Перед добавлением этого резервирования - я хотел бы проверить, есть ливсе еще допустимы места для этого резервирования, используя метод бина сущности

public boolean isThereRoomForAnotherReseravtion ()

Я прочитал здесь , что синхронизированный метод не будетрешить проблему.

Я думал об использовании хранимой процедуры с правилом проверки для решения, но это звучит неправильно.

Существует ли стандартная практика для записи процедура безопасна?

С уважением,

Дэнни

1 Ответ

4 голосов
/ 03 июля 2011

Никакая синхронизация Java на самом деле не может помочь вам, поскольку всегда может быть какой-то второй клиент базы данных (может быть, даже ваше собственное приложение в кластерной среде), который может одновременно обращаться к базе данных.

Вам необходимо углубиться на уровне базы данных и использовать средства блокировки базы данных, такие как оптимистическая / пессимистическая блокировка. JPA 1.0 поддерживает первое, 2.0 поддерживает оба. Выбор зависит от того, какой уровень параллелизма вы подозреваете.

...