2013-04-18 48 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 ..但挑战是同步应该是一个差分...克服延迟执行截断现有的行并重新转储所有记录... –