java - 优化 portlet 首选项的性能

标签 java class hashmap portlet websphere-portal

我计划为 PortletPreferences 类编写一个静态类。由于每次调用PortletPreferences.getValue()时,我都会调用内部门户数据库来获取值。我调用 PortletPreference.setValue() 和 PortletPreferences.store() 将其保存在数据库中。每次我更改首选项时都会调用数据库。我想优化我的代码的性能。我正在寻求帮助和建议,如何实现这一目标。

我有一个想法,但不确定是否正确。我可以编写一个静态 Map 类来实现此目的吗?如果我错了,请纠正我。谢谢!

最佳答案

如果您计划将首选项本质上设置为“只读”并且对每个用户都相同,那么最好将它们加载到 map 中一次,然后始终在内存中访问它们,而不是通过 API。

但是,如果您计划更改 portlet 首选项(而不重新启动 portlet 应用程序)或者如果允许用户设置自己的首选项值,则您应该小心。在这两种情况下,值都是动态的,并且每次都应该获取。您不希望有人更新偏好设置后却看不到它产生预期的效果。您也不希望一个用户使用另一用户保存的首选项值。

在 map 中存储首选项本质上是创建一个共享缓存,您必须手动更新该缓存,而不是让 API 执行此操作。如果这样的缓存的含义满足您的要求,那么请务必使用它。

关于java - 优化 portlet 首选项的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11928798/

相关文章:

go - 根据 Golang 中 hashmap 的值获取键的简单方法

Java HashMap put 方法不起作用

java - 升级到 gradle 4.4 和 gradle 构建工具版本 3.1.2 后,文件中出现红线

java - Spring Cloud AWS cglib问题

Java I/O : How to append to an already existing text file

javascript - 如何调用同名的父函数?

java - 在 Java 中使用带有字符串和整数的 HashMap 时遇到问题

java - 在 Eclipse 中配置多个动态 Web 项目之间共享库的最佳实践

python - 在另一个类中使用一个类的实例

swift - 如何从 Swift 5 中的另一个类获取数组