我有一个GWT应用程序,它使用休眠来连接到postgres数据库。当我在更快的服务器上运行tomcat中的应用程序时,我注意到了一个问题。Postgres保存数据比休眠读取值更慢
我的应用程序中的一个视图从数据库加载旧数据。那么发生了什么?在视图中,用户可以输入一些数据,然后他点击保存按钮。这会导致一个异步调用,通过休眠将数据保存到postgres中。只要我在代码中执行commit()(我将lazy update设置为false),我就从异步调用返回,然后对视图进行刷新(=从db重新加载数据并显示它)。这导致重新读取来自db的数据。但是,该视图有时会显示旧数据。然后我再次刷新视图,我可以看到正确的当前数据。我的猜测是,hibernate的commit()函数导致异步调用,因此我比第一次异步调用(当用户点击保存按钮时)早一些回来,而不是将数据保存到postgres。因此该视图加载旧数据。
有没有人有类似的问题,休眠和postgres?
第一次异步调用在调用commit()完成时完成。但是,如果函数commit()正在另一个线程中执行,那么可能会导致该问题。浏览器无法缓存数据,因为每次我从数据库显式加载数据。 – mkn
提交不是异步的。如果是的话,它不会再被称为交易。 –