異なる JVM で実行されている同じアプリケーションの 3 つのインスタンスがあります。データベース内の特定の値が異なるアプリケーションによって同時に変更されることは望ましくありません。Javaでこの制限を適用するにはどうすればよいですか?
1667 次
1 に答える
2
使用しているテクノロジー スタックによって異なります。
- 楽観的または悲観的な同時実行制御を行うことを検討することをお勧めします
- 悲観的な同時実行制御が必要で、JDBC を直接使用している場合、行ロックを行う方法は DBMS 固有になります (一部の DBMS では、そうすることができない場合もあります)。たとえば、Oracle では、次のようにします。
select * from table_name for update
- JPA または Hibernate を使用している場合は、
EntityManager.lock(entity)
/Session.lock(entity)
(同様のもの)でラップされます。 - 場合によっては、特別なことをする必要さえありません。
問題の詳細を提供しない限り、具体的な提案をすることは非常に困難です。
于 2015-03-23T06:37:15.677 に答える