2007-08-09
Identity Map
关键字: Identity Map
概念
通过在map中保存所有的加载对象,确保对象只加载一次,每次查找对象都先去map中查找是否有这个对象,如果有就返回,没有才去加载
场景
1、管理从数据库加载的对象,使之持久对象在内存中始终唯一
2、作为从数据库加载对象的缓存器,可以避免每次读数据时候都要从数据库加载
应用
单数据库简单用法:对每个表都有一个对应的map,当需要从数据库中加载一个对象的时候,你首先核实一下map,如果map中存在一个和你所需要加载的对象相等的一个对象,直接返回这个对象,如果没有,查找数据库,并且把加载出来的对象放到map中。
注意点
1、关键字的选择:以表名作为map的关键字,以主键作为map中各个对象的关键字
2、Explicit or Generic:Generic是对每类对象都采用一个方法,比如find("Person", 1),其中一个输入参数制定是什么类型的对象,好处在新增加一个map不需要重新些一个方法。Explicit是对每类对象分别采用不同的方法,比如:findPerson(1),好处比较直观,如果通过泛型来做的,也可以做到新增一个map不用重新一个方法。
3、map的数量:每类对象对应一个map,如果不同类的每个对象都有一种标识能区别的,可以用次方法,有利于管理map,而且增加一类对象的时候也不需要在家map;整个session对应一个map,比较符合数据库的设计,每个map用表名作为key,比较清晰,但是比较难处理的是继承树的处理。







评论排行榜