2016-10-22 3 views
1

아마도 주제가 중복되었지만 Google에서 답변을 찾을 수 없습니다. (아마 잘못된 단어를 사용)데이터베이스 저장 객체와의 Java 문의

나는 자바 REST API에서 일하고 있는데, 내 데이터베이스에 저장된 두 개의 자바 개체가 있습니다. 약속 및 이용 가능 여부. 약속을 잡으려면 내 사용자가 있는지 확인해야합니다.

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

내 서비스 인스턴스가 하나 뿐인 경우에는 문제가 없습니다. 하지만 두 인스턴스가 있고 새 약속을 저장하기 전에 동시에 내 방법을 확인하면 어떨까요?

내 데이터베이스에 저장된 객체의 동시성을 관리하는 방법은 무엇입니까?

변경 될지는 모르겠지만 Google App Engine 또는 AWS를 사용하여 응용 프로그램을 배포 할 계획입니다.

Thx.

답변

2

이 문제를 처리하는 일반적인 방법은 레코드를 버전 관리하는 것입니다. 낙관적 인 잠금이라고하는 전략. 사용자를 읽을 때 해당 사용자에 대한 버전이 있어야합니다. 그런 다음 원하는대로 변경합니다. 당신이 그것을 쓰려고 갈 때, 버전 번호가 일치하지 않으면, 당신은 누군가 당신이 그것을 읽었을 때 그 기록을 갱신했다는 것을 알고 있습니다. 쓰기가 실패합니다. 갱신 사항을 얻기 위해 레코드를 다시 읽은 후 다시 시도하십시오 (새 데이터에 의미가있는 경우).

AWS 디나모 DB를 들어

가 : http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptimisticLocking.html

당신이 당신의 자신의 DB를 가지고하려는 경우, 최대 절전 모드는 잠금의 유형을 구현하는 자바 ORM이다 데이터베이스를 다루는

많은 libs와이 내장 것이다 : http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#entity-pojo-optlock

+0

죄송합니다. 그 10 일 동안 계속 된 것을 알고 있습니다 ...하지만 질문이 있습니다. Dynamo DB는 NoSQL 데이터베이스에서만 작동합니다. SQL 데이터베이스와 비슷한 솔루션이 있습니까? AWS는 최대 절전 모드를 지원합니까? – Antoine

+0

예, dynamo db는 nosql databsae입니다. –

+0

AWS에는 rds라는 관리 형 SQL 솔루션이 있습니다. 최대 절전 모드로 사용할 수 있습니다. 당신도 사용할 수있는 다른 ORM이있을 수 있으며, 최대 절전 모드는 내가 경험 한 것입니다. –

관련 문제