对象保持是一个大多数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获得有关流行系统更多的信息。