Controle transacional do Spring e acessos concorrentes

Olá,

Fiz uma pequena aplicação que mescla Spring + Hibernate + DWR.
Existem 3 operações realizadas de modo assincrono, na mesma tela:

Adição de um Livro
Busca de livros pelo nome ou parte do nome
Exclusão de um livro listado

Quando eu excluo um livro, eu mando ele atualizar os livros buscados novamente.

O que acontece é que quando eu listo muitos livros e resolvo apagar um por um, as vezes não da tempo de comitar a transação entre eu mandar apagar um livro e outro e o livro que eu mandei apagar acaba entrando na listagem… aí se eu clico para apagar de novo depois da transação ser comitada, da erro pois estou tentando apagar um livro que não existe…

Pensei em 2 coisas:

1 - Existe alguma configuração que trata isso e eu não estou usando
2 - Operações de update não devem ser feitas tão assincronamente junto com buscas

Qual frase esta certa?

Alguém pode me ajudar a solucionar este problema?

EDIT* as configurações da transação:

		<property name="transactionAttributes">
			<props>
				<prop key="save">PROPAGATION_REQUIRED</prop>
				<prop key="addBook">PROPAGATION_REQUIRED</prop>
				<prop key="deleteBook">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>

			</props>
		</property>

isto não parece controle de transações …
e sim problema de sincronizmo com o Ajax …
requisições ajax tu não tem como garantir qual sera executada primeiro …
e se a listagem ocorrer antes do delete ele vai aparecer mesmo na lista …