从传统的 Notes 开发中,我们了解到在脚本中检索 Domino 对象(如数据库和视图)是无效的,应该避免循环使用。
在 XPages 中,我们不能序列化 Domino 对象,而且我们经常多次检索同一个对象。我们有一个示例,我们正在根据存储在项目相关文档中的项目编号检索项目数据。bean 的作用域applicationScope
是缓存,结果是缓存的。
public class Projects{
private TreeMap<String, Project> projectList;
public Projects() {
}
public Project getProjectInfo(String projNum) {
Project project = null;
if (projectList==null) {
projectList = new TreeMap<String,Project>();
}
if (projectList.containsKey(projNum)) {
project = projectList.get(projNum);
} else {
try {
Database projDb = DominoAccess.getDatabase("projects");
View v = projDb.getView("(projLookup)");
ViewEntry ve = v.getEntryByKey(projNum);
if (ve != null) {
project = new Project(ve);
projectList.put(projNum, project);
}
} catch (Exception e) {
}
}
return project;
}
}
例如,当它首次用于重复时,将为每个文档创建数据库和视图对象。这是最佳实践还是有更好的方法来解决这个问题?
我知道我们可以在第一次使用时将所有项目放在地图中,但也不确定这是否是关于内存的最佳实践?