我有以下实体:
//metadata...
public class Article{
//properties...
private Set<Field> fields;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "field", orphanRemoval = true)
public Set<Field> getFields()
{
return this.fields;
}
}
我的问题是我获取所有文章的服务需要花费很多时间,因为每个Article对象都有一个包含200个Fields对象的列表,这是我的代码:
//this service toke a lot of time, beacause it load the Object Article and it list of Fields objects
listOfArticles = service.getArticles();
//loop through listOfArticles to construct a map of fields from the list
for (Article article: listOfArticles) {
//this service construct a map of fields for each Article
Map<String, String> mapFields = service.constructMap(article);
//...some code
}
我的想法是,在实体文章中,我想破坏与属性字段的关联(删除属性字段),并在一个大地图中加载所有Fields对象(来自数据库)(该地图可能包含1M对象)应用程序启动时 然后在我的循环中,我将直接从数据库的大地图insitead中读取字段列表。 这会对我有用吗,我可以缩短响应时间吗? 我的想法是改善绩效的一个很好的解决方案吗?
提前致谢。
答案 0 :(得分:0)
加载整个表永远不是一个好主意,我会建议一些点来提高你的表现。
每次都可以尝试使用延迟加载来提高系统性能。请记住,这样做可能会提高你的表现,但另一方面你会使用更多的记忆,也许你可以考虑使用列出的3个第一点。