Concorrência Java com objetos armazenados no banco de dados

Antoine

Provavelmente é uma duplicata de um assunto, mas não consigo encontrar uma resposta no google. (Provavelmente usando palavras erradas)

Estou trabalhando em uma API REST Java e tenho dois objetos java armazenados em meu banco de dados. Um compromisso e uma disponibilidade. Para marcar uma consulta, preciso verificar se meu usuário está disponível.

public void addAppointment(Date startDate, Date endDate, User user)
{
    if(availabilityService.isAvailable(startDate, endDate, user)
        dao.addAppointment(startDate, endDate, user);
}

Tudo está bem se eu tiver apenas uma instância dos meus serviços. Mas e se eu tivesse duas instâncias e elas verificassem ao mesmo tempo meu método antes de armazenar o novo compromisso?

Como gerenciar a simultaneidade com objetos que estão armazenados em meu banco de dados?

Não tenho ideia se isso vai mudar alguma coisa, mas estou planejando usar o Google App Engine ou AWS para implantar meu aplicativo.

THX.

Arthur cinader

A maneira típica de lidar com esse problema é controlando a versão dos registros. Uma estratégia chamada bloqueio otimista. Quando você lê o usuário, deve haver uma versão para esse usuário. Em seguida, você faz as alterações desejadas. Quando você for escrevê-lo, se os números da versão não corresponderem, você saberá que outra pessoa atualizou o registro desde que você o leu. A gravação falha. Você relê o registro para obter as atualizações e tenta novamente (se fizer sentido com os novos dados).

Muitas bibliotecas para lidar com bancos de dados terão isso integrado:

Para AWS Dynamo DB: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptimisticLocking.html

Se você planeja trazer seu próprio banco de dados, o hibernate é um ORM java que implementa este tipo de bloqueio: http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#entity-pojo-optlock

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Concorrência PHP MySQL com número máximo limitado de itens no banco de dados

Valores armazenados no banco de dados

Banco de dados Sqlite com objetos nulos no banco de dados

Java e mySQL, por que criar objetos de classe com dados do banco de dados?

Java e mySQL, por que criar objetos de classe com dados do banco de dados?

Como verificar a opção de fundo com dados armazenados no banco de dados

Como posso selecionar dados armazenados em um banco de dados com PHP

ID de objetos java não sincronizados com banco de dados

Erro de inicialização do banco de dados MySQL Spring Boot com procedimentos armazenados

Como comparar um baralho de cartas com baralhos armazenados no banco de dados

Verificando a localização atual com os locais que estão armazenados no banco de dados Sqlite

Como posso adicionar uma nova linha ao banco de dados com valores armazenados em ObservableCollection?

enviando um sms nexmo para todos os números armazenados no banco de dados com laravel

Inserir banco de dados com várias partes / dados de formulário não funciona (dados não armazenados)

É uma boa prática em Java EE e CDI para selecionar o implementatation para ser injetado com base no valor de configuração armazenados no banco de dados?

Formato de criptografia para dados Woocommerce armazenados no banco de dados

Concorrência Java: O que leva à insegurança na publicação de objetos?

Recuperar dados armazenados no banco de dados SQFlite (Flutter)?

criptografar os dados armazenados em meu banco de dados

Login Java com banco de dados MySQL

Cursores com postgres, onde estão os dados armazenados e quantas chamadas para o banco de dados

Como evitar a liberação de objetos armazenados em contêineres com a mesma contagem de referência

Movendo a tabela de auditoria com envers java para nova instância de banco de dados

Java - Uso de instância de banco de dados com SQL Server para exportação XLS

Entity Framework com banco de dados existente e classes com várias fontes vs procedimentos armazenados manuais

Classifique em Java com dados de um banco de dados

Enviar notificação push de aplicativo móvel com oneignal REST API para dispositivos armazenados no banco de dados

Como os cupons WooCommerce são armazenados no banco de dados?

Copiando vários procedimentos armazenados para outro banco de dados