我想更新一個單例對象(在應用程序啓動時使用bean定義在彈簧中加載)。然而,該對象用來自數據庫(MySQL)中的表的條目加載。在數據庫更新中使用Spring和Hibernate更新單例對象
此表可以通過應用程序不時更新。
當數據庫中的某行更新時,是否可以使用spring和hibernate更新單例對象?
我想更新一個單例對象(在應用程序啓動時使用bean定義在彈簧中加載)。然而,該對象用來自數據庫(MySQL)中的表的條目加載。在數據庫更新中使用Spring和Hibernate更新單例對象
此表可以通過應用程序不時更新。
當數據庫中的某行更新時,是否可以使用spring和hibernate更新單例對象?
您可以使用Hibernate事件監聽器:
哪些只能在單個應用程序中使用。如果你有多個應用程序修改相同的數據,你將不會得到這些事件。 – 2014-09-29 09:53:00
問題是:「此表可以通過應用程序不時更新。」 – 2014-09-29 09:58:15
使用PostgreSQL,您可以獲得[數據庫通知](http://www.postgresql.org/docs/9.3/static/sql-notify.html),但他使用的是MySQL。另一個解決方法是使用JMS鏈接事件和單例更新。 – 2014-09-29 09:59:32
如果它包含的數據足夠小,可以保存在內存中,每次需要時從數據庫加載狀態應該不成問題。如果真的需要,您可以隨時使用第二級緩存。 – 2014-09-28 12:03:30
我不明白你的意思,說「表可以通過應用程序更新」,是應用程序意味着從同一虛擬機的其他功能?或者是否意味着另一個VM或主機可能同時寫入表?如果更改來自另一個虛擬機或主機,則當前對象已經很髒。 @JBNizet建議您每次都必須從數據庫加載它們以保持它與數據庫相同。 – 2014-09-28 14:22:56
我需要使用同一虛擬機上的其他功能通過應用程序更新表。 – anurupr 2014-09-28 19:17:12