2013-04-18 44 views
0

我有一個類型(String,PojoObj)的Hashmap。這是由我的Java程序使用,它正在運行並定期使用Quartz schedular觸發。如何執行對象集合和數據庫之間的差異同步表

對於java程序.. HashMap的將被破壞的數據..使損失的突然殺人時,安全..

所以,我計劃轉儲/同步HashMap的數據(POJO對象)時該類由schedular開始執行。如果同步是不同的,它將會有效。(只有更改的值在DB中更新)。

我沒有任何想法做它...請幫助我..我在我的程序中使用Hibernate 3.5。

回答

0

您可以使用停機處理程序用於此目的:

public final class MyShutDownHandler extends Thread { 

    private List<IObserver> observerList; 
    private static MyShutDownHandler shutdownHandler; 

    private MyShutDownHandler() { 
     observerList = new ArrayList<IObserver>(); 
     Runtime.getRuntime().addShutdownHook(this); 
    } 

    public static MyShutDownHandler getShutdownHandler() { 
     if (shutdownHandler == null) { 
      synchronized (MyShutDownHandler.class) { 
       if (shutdownHandler == null) { 
        shutdownHandler = new MyShutDownHandler(); 
       } 
      } 
     } 
     return shutdownHandler; 
    } 

    public void run() { 
     for (IObserver observer : observerList) { 
      observer.execute(); 
     } 
    } 

    public void register(IObserver observer) { 
     observerList.add(observer); 
    } 
} 

你可以註冊成爲許多觀察家,因爲你需要(IObserver的實現)。在發生關機之前,特定的觀察者可以執行必要的 進程。

public interface IObserver { 

    void execute(); 

} 
+0

這隻有當我們執行的應用程序或用戶的正常關機indused關機......但我需要DB2表HashMap中的POJO之間定期同步使用....怎麼樣了它的可能嗎?這也是一個差分... –

+0

可能是我可以使用休眠來保存pojo對象通過迭代Hashmap ..但挑戰是同步應該是一個差分...克服延遲執行截斷現有的行並重新轉儲所有記錄... –