2010-02-11 88 views
0

有沒有簡單的方法使用庫來促進兩個hibernate實例的同步。一個在客戶端本地運行,另一個在通過Web服務公開的中央服務器上運行。在本地和服務器上運行hibernate之間的同步

因此,客戶端跟蹤它所做的更改,並將它們推送到服務器。服務器確保客戶端不更新不同步對象並存儲客戶端更改。

客戶端還可以與服務器同步,以便它可以看到其他客戶端所做的更改。

這個想法是客戶端可以離線運行,無需訪問服務器,只需要在線進行同步即可。

回答

1

沒有「神奇」的方式來實現它。你必須做這樣的事情:

  • 做出versionlastModified現場爲每個實體
  • 發送(通過Web服務,RMI,或無論是在您的處置)的序列化形式局部休眠實體(對象seriralization,XML,JSON)
  • 實體第一 - 只是堅持他們的服務器
  • 刪除第二實體上 - 你必須在一些地方保存他們的id S和version。如果服務器上的版本尚未更改,請刪除它們。如果有 - 自己決定是否刪除它們
  • 已更新實體第三 - 再次比較version字段。如果服務器上沒有修改,請堅持新的實體。如果已經有修改,有幾個選項:
    • 報告合併衝突,並且不與來自客戶端
    • 的一個合併它們
    • 覆蓋服務器版本實現更復雜的合併機構,其中的每個領域都有自己的版本,但這太複雜了
0

我不確定如何獲得一切,但可暫時斷開連接的客戶端並不是一件容易處理的事情。這種客戶端通常需要一個嵌入式數據庫,這意味着當返回在線時與主數據庫同步和/或合併,這實際上遠非一個微不足道的過程。所以,爲了回答你最初的問題,我感到沒有簡單的方法來實現這一點。

相關問題