请教:关于O/RMAP技术与Observer模式

02-12-11 foxprince
假设有这样的需求:对数据库表中的某些行的数据修改要能立即检测到,并且通知“关注”此数据的应用。数据修改的过程不可控,有可能是人工修改,也有可能是由其他应用系统修改。

我拟采用如下方案:

1、采用ORMAP技术把数据映射为对象。

2、使用Observer模式,把映射的数据对象作为被观察者,把需要根据数据修改做响应处理的对象作为观察者。

不知此方案是否可行。

主要的疑问是:当数据库中的数据发生更改时,与这些数据映射的对象能否立即同时更新?更新过程是否需要手工干预?

另外:Castor JDO与Sun JDO哪一个更优些?

如能赐教,不胜感谢!

banq
2002-12-11 15:51
应该可以,我觉得也是比较好的办法,关键是同步。

不知道你采用什么同步机制?

Castor JDO没有sun JDO正宗,但是我觉得好用,我用过它的XML部分。

foxprince
2002-12-11 16:40
banq果然是高手,一语中的。

“同步”的问题,正是我这几天头疼的问题。我初次接触JDO,本以为 JDO 可以提供同步机制,保证和数据库的原始数据的一致性,但看来希望要落空了。

我目前的“同步”方案是这样的:

1、构建一个“池”来保存需要和数据库同步的对象。

2、“池”根据条件管理这些对象,定义add(...),update(...),delete(...)方法。

3、所有这些数据对象继承或实现一个抽象类--此抽象类中定义与数据库同步的方法。

4、数据对象必须实现实现Runnable接口,在其run()方法中调用同步方法。

具体的细节尚在考虑中,banq可否给些建议。

另:有没有关于数据同步的开源项目?

banq
2002-12-12 13:23
目前我不知道。

这可能要自己做,建立一个线程监视数据库的这条记录就可以了,不一定要用O/R Map

foxprince
2002-12-12 13:44
如果需要监视的记录有很多,会长时间占用数据库资源,而且性能影响也很大。

嗯,真让人头疼!

猜你喜欢
3Go 1 2 3 下一页