我有一個GWT應用程序,它使用休眠來連接到postgres數據庫。當我在更快的服務器上運行tomcat中的應用程序時,我注意到了一個問題。Postgres保存數據比休眠讀取值更慢
我的應用程序中的一個視圖從數據庫加載舊數據。那麼發生了什麼?在視圖中,用戶可以輸入一些數據,然後他點擊保存按鈕。這會導致一個異步調用,通過休眠將數據保存到postgres中。只要我在代碼中執行commit()(我將lazy update設置爲false),我就從異步調用返回,然後對視圖進行刷新(=從db重新加載數據並顯示它)。這導致重新讀取來自db的數據。但是,該視圖有時會顯示舊數據。然後我再次刷新視圖,我可以看到正確的當前數據。我的猜測是,hibernate的commit()函數導致異步調用,因此我比第一次異步調用(當用戶點擊保存按鈕時)早一些回來,而不是將數據保存到postgres。因此該視圖加載舊數據。
有沒有人有類似的問題,休眠和postgres?
第一次異步調用在調用commit()完成時完成。但是,如果函數commit()正在另一個線程中執行,那麼可能會導致該問題。瀏覽器無法緩存數據,因爲每次我從數據庫顯式加載數據。 – mkn
提交不是異步的。如果是的話,它不會再被稱爲交易。 –