Я использую Glassfish 3.1 + Hibernate 3.6 + Postgres 9, и я не совсем понимаю, как мне следует обрабатывать «длинные» параллельные транзакции.
В некоторых случаях мои транзакции могут занимать до одной секунды. Что происходит, это то, что я генерирую объекты из таблицы шаблонов, когда получаю событие от клиента. Может случиться, что два разных события создают перекрывающийся набор объектов.
Я думаю об этом сценарии:
T1 begin
T1 read objects which may already exist
T2 begin
T2 select templates which have to be processed
T1 inserts (generate objects)
T1 commit
T1 select templates which have to be processed
T1 inserts (generate objects)
T1 commit
Как это будет распространяться на меня? Любое исключение блокировки? Или я получу исключение ограничения из-за уникального индекса?
Как я могу справиться с этой ситуацией? Перезапустить обработку события 3 раза, прежде чем остановить его обработку?
привет,
м