2017-01-19 8 views
0

データベースに受講者レコードを挿入する方法が1つあります。日付のデータベースには、学生の出席記録が1つだけあります。私はデータの一貫性を確認する必要があります。私はこのメソッドを同期メソッドとして定義しました(つまり、異なるシステム/ブラウザから同時に試してみると、特定の生徒に2つのレコードを挿入しないでください)。同期メソッドが別のシステム/ブラウザから同時に呼び出されたときに、2つのレコードがデータベースに挿入されます

public synchronized void SaveOrupdateAttendance(final StudentAttendance studentAttendance) throws ApplicationException { 
    /*Method Code*/ 
    saveOrUpdate(studentAttendance); 
} 

2つのレコードがdbに挿入されます。私のアプローチが間違っています。助けてください

+0

あなたのメソッドはおそらく2回呼び出されています。より多くのコードを見る必要があります。 –

+0

@スティーブスミスええ。これは、別の同期メソッドからのループからの呼び出しです。その場合も正常に動作するはずです。リット? –

+1

同期は魔法ではありません。それが機能するには、定義されているクラスのインスタンスが1つだけであることを確認する必要があります。あなたが与えられたコードの量があなたの問題を特定するのに不十分であるので、[mcve]が最も良いでしょう。 – RealSkeptic

答えて

1

Javaの同期は、リソースを1つずつ共有するマルチスレッドを処理します。それは、メソッド内で使用するデータが重複しないようにすることを意味します。

データをデータベースに挿入する前に、または複数の送信を許可しないようにアプリケーションを設計する前に確認してください。

関連する問題