尝试一种新的对象保持的方法

ZDNet软件频道 时间:2004-04-20 作者:Builder.com |  我要评论(6)
本文关键词:javatips
对象保持是一个大多数Java程序员在他们的职业生涯中要重复解决的问题。本文将会告诉大家一种新的对象保持的方法。
本文译自Builder.com,未经许可请勿转载

对象保持是一个大多数Java程序员在他们的职业生涯中要重复解决的问题。程序员一般都会选择使用数据库来完成这个任务,然后通过写代码将对象或者对象状态存入数据库。

流行(Prevalence)是进入Java社区的用于保持对象的一个革命性的新方法。与经典方法最明显的区别就是对象保持不使用数据库。没有数据库层,相反地,有一个流行(prevalence)层。在一个流行系统(Prevalent system)里面,所有我们关心的对象都保持在内存中,流行系统的一个快照会定期地写入永久存储区(通常是一个文件或者一组文件)。

用于Java的第一个对象保持的实现是一个叫做prevayler的包,是开放源代码的、具有体积小、速度快、容易集成等特点。

从一个程序员的角度上,在一个流行系统中管理对象不比其它保持机制难。如果你乐意,你还可以将访问流行系统包装为数据访问对象(DAO)并以常规的方式使用。

比如说,如果你有一个管理保险政策的系统,那么可能会有一个PolicyDAO类型,下面是一个例子:

...
public PrevalentPolicyDAO extends AbstractPrevalentSystem implements PolicyDAO
 {
  private Map policies = new HashMap();

  public add(Policy p) {
     this.policies.put(getPolicyId(), p);
  }

  public Policy find(Long id) {
      return (Policy) this.policies.get(id);
  }
...
}

调用add()方法可能添加一个新Policy对象;使用Policy的ID作为参数调用find()方法可以获取一个Policy对象。系统的其它地方,将会有几行代码记录流行系统对象的一个快照PrevalentPolicyADO,用来在每隔一段时间存入磁盘或者由你决定应该做什么。

创建SnapshotPrevayler的代码如下:

SnapshotPrevaylerprevayler =
    new SnapshotPrevayler(new  PrevalentPolicyDAO(), "policies.dat");

获取系统快照的代码如下:

prevayler.takeSnapshot();

如果你认为肯定还不止这些东西,那么你猜对了。虽然流行系统还有不完善,需要解决新的问题,但是流行依然值得考虑。它比数据库访问要简单,并且要快得多。虽然它不是对于每一种情况都适用,但是对于某些却是非常好的方案。目前已经有用于Java、C#、Python、Ruby等很多其它语言的流行系统。

访问Prevayler.org获得有关流行系统更多的信息。


David Petersheim是一位Genscape公司的资深Java开发人员。他设计和开发用于获得和处理实现能量数据的服务器端的应用程序。


责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134