2013-07-19 32 views
1

嗨Im新的JPA我想知道如何處理以下場景如何使用單實例處理JPA中的實體?

我需要維護數據庫中收到的消息的總數,沒有必要存儲消息,但只有它的count.Im表示計數一個名爲MessageCount的實體,其變量計數如下

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

我需要更新計數,只要我收到一條消息。

我該如何更新?
處理這個問題的正確方法是什麼?

在此先感謝。

回答

2

這樣做的唯一方法就是發出一個直接查詢(而不是提取實體並遞增它)。適當的JPA查詢是:

UPDATE MessageCount SET count = count + 1 

如果使用JPA獲取實體,加1,然後再保存它 - 你的風險覆蓋另一個線程遞增和保存價值。在單個查詢中執行操作可確保它在單個原子事務中發生。

+0

謝謝,但我不能證明在這裏使用JPA,因爲我可以改爲使用直接的mysql連接,並做到這一點(不需要實體類和所有這些東西) – vignesh

+0

如果您的應用程序使用JPA的其他東西無論如何,你最好堅持使用JPA。現在,它正在抽象出你的底層數據庫實現。如果已經在使用JPA,那麼與此相關的成本極低。不過,我不會爲此推薦_adding_ JPA。 –

+0

謝謝,現在我很清楚。 – vignesh