Sychroniser et mettre à jour des données
Salut
j'utilise spring boot, spring-data jpa et mysql
Dans une application de gestion de gym, pour le memberId la valeur utilisait un autoincrement de mysql
Gym A crée un membre, memberId = 1
Gym B crée un membre, memberId = 2
Gym A crée un membre, memberId = 3
Il voudrait avoir un générateur pour chaque gym.
J'ai créer un nouveau champs memberNumber pour membre.
Gym A crée un membre, memberId = 1, memberNumber=1
Gym B crée un membre, memberId = 2, memberNumber=1
Gym A crée un membre, memberId = 3, memberNumber=2
au niveau de la bd
Dans la table gym j'aurais un champ currentGeneratorValue
ConfigGenerator
gym currentGeneratorValue
1 2
2 2
3 18
Je cherche une façon de lire currentGeneratorValue, sauvegarder le membre, mettre la nouvelle valeur dans currentGeneratorValue.
Code:
1 2 3 4 5 6 7
|
public class Member{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long memberId;
private Long memberNumber;
} |
Dans mon service
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
@Service
public class MemberServiceImpl implements MemberService{
private final MemberRepository memberRepository;
public MemberServiceImpl(final MemberRepository memberRepository){
this.memberRepository =memberRepository;
}
public Long memberSave(MemberDto memberDto) throws ResourceNotFoundException{
Member member=null;
if(memberDto==null){
throw new ResourceNotFoundException("Member null");
}
if(memberDto.getMemberId()!=null){
member=memberRepository.findOne(memberDto.getMemberId());
}
convertToBean(memberDto, member);
if(member==null){
member = new Member();
//get current value
//set value for memberNumber field
memberRepository.save(member);
//update value
}else{
}
memberRepository.save(member);
}
public synchronized Long getCurrentValue(){
...
}
public synchronized Long setCurrentValue(){
...
}
} |
Je pensais utiliser des sychronized et faire une transaction manuellement?
des meilleurs façon?