| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/10/2009 22:34:11
|
dreampeppers99
Virtual Machine Man
![[Avatar]](/images/avatar/6fb993285d56e6927284ff9b11ac6851.jpg)
Membro desde: 29/08/2006 21:50:17
Mensagens: 523
Offline
|
Gostaria de saber como implementar : pessimistic | optimistic lock no JPA.
Penso que tudo se esclarecerá melhor com um exemplo:
Num cenario com três entidades - Produto {id, descricao, preco, quantidade} , ItemVenda {id, produto, preco, quantidade} e Venda{id, List<itemvenda> itens, data, vendedor}.
Um processo que determina uma compra é: verificar se há a quantidade de produtos e diminuir essa quantidade.
Melhorando minha pergunta... qual tipo de lock eu deveria usar? (ou um para cada...?)
No momento em que estou lendo a quantidade de produtos que há no estoque, ninguém deveria ser capaz de alterar esse valor ... se não estiver claro ... tentarei utilizar outras palavras.
[Consegui resolver e até públiquei um post sobre o assunto (pouco explorado) - concorrência na JPA - http://archsofty.blogspot.com/2009/10/jpa-lock-otimista-e-pessimista.html ]
This message was edited 1 time. Last update was at 29/10/2009 15:25:41
|
- Não respondo dúvida por PM!
- Blog -> Software development - Clojure, Ruby, Java, Test and little pumpkins
- Blog - Desenvolvimento de software - Java |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/10/2009 14:23:59
|
kired
JavaBaby
Membro desde: 21/01/2009 08:07:31
Mensagens: 83
Offline
|
Amigo,
Tente ver algo sobre a anotação "@Version", to sem tempo agora pra te dar um exemplo de como usa-la, mas deve ter vários tutos pela internet, ou a própria documentação.
Abraços!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/10/2009 14:35:45
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Minha sugestão é de fazer um lock otimista.
No seu método de negócio eu faria um refresh do objeto na base fazendo um lock no mesmo. Então nesse momento valido a quantidade lançando exception caso não houver mais produtos disponíveis; depois calculo a nova quantidade, salvo na base e libero o lock.
Usei essa mesma metodologia quando implementei o sistema de vendas de uma grande telecom aí. Funcionou muito bem.
Isso te ajuda? Abraços
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/10/2009 14:42:38
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Complementando...
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/10/2009 15:09:09
|
dreampeppers99
Virtual Machine Man
![[Avatar]](/images/avatar/6fb993285d56e6927284ff9b11ac6851.jpg)
Membro desde: 29/08/2006 21:50:17
Mensagens: 523
Offline
|
Obrigado por todas as dicas, a partir dai ficou mais fácil pesquisar... até ousei a escrever algo sobre concorrência na JPA - http://archsofty.blogspot.com/2009/10/jpa-lock-otimista-e-pessimista.html
This message was edited 1 time. Last update was at 09/12/2009 22:24:37
|
- Não respondo dúvida por PM!
- Blog -> Software development - Clojure, Ruby, Java, Test and little pumpkins
- Blog - Desenvolvimento de software - Java |
|
|
 |
|
|