1

こんにちは、JPA は初めてです。次のシナリオの処理方法を知りたいです。

受信したメッセージの総数をデータベースに維持する必要があります。メッセージを保存する必要はありませんが、その数だけを保存する必要があります。

    @Entity  
    public class MessageCount  
    {  
        long count;
    ...

メッセージを受信するたびにカウントを更新する必要があります。

どうすれば更新できますか?
これを処理するための正しいアプローチは何ですか?

前もって感謝します 。

4

1 に答える 1

2

これを確実に (アトミックに) 実行する唯一の方法は、直接クエリを発行することです (エンティティを取得してインクリメントするのではなく)。適切な JPA クエリは次のようになります。

UPDATE MessageCount SET count = count + 1

JPA でエンティティを取得し、1 を追加して再度保存すると、別のスレッドがインクリメントして保存した値を上書きする危険があります。単一のクエリで操作を実行すると、単一のアトミック トランザクションで確実に実行されます。

于 2013-07-19T11:52:50.770 に答える