我通过使用简单的“选择”查询来使用hibernate获取结果集。但是,它耗费了大量的时间,如350毫秒,400毫秒,500毫秒..理想情况下,它不应该花这么多时间进行简单的查询。当我减少缓存机制时,它会快速检索。但是,第一次需要很多时间。
这是我的代码
public JSONObject getWidgetDetails(String userId) {
log.info("[Widget][Get Details] Received UserID in Impl :"+userId);
JSONObject obj = new JSONObject();
long lStartTime = new Date().getTime();
try (Session session = factory.openSession()) {
String hql = "FROM com.DashboardModel where uid = :id";
Query query = session.createQuery(hql);
query.setParameter("id", userId);
query.setCacheable(true);
List<?> results = query.list();
JSONObject jObj = new JSONObject();
for (int i = 0; i < results.size(); i++) {
DashboardWidgetModel dwm = (DashboardWidgetModel) results.get(i);
jObj.put(defaultWidget, (JSONObject) new JSONParser().parse(dwm.getDefaultWidget()));
jObj.put(others, (JSONObject) new JSONParser().parse(dwm.getOthers()));
jObj.put(widgetGalleryList, (JSONArray) new JSONParser().parse(dwm.getWidgetGalleryList()));
jObj.put(widgetModelList, (JSONArray) new JSONParser().parse(dwm.getWidgetModelList()));
jObj.put(dwUserId,(JSONObject) new JSONParser().parse(dwm.getUserId()));
}
obj.put(DashBoardStructure, jObj);
log.info("[Widget][Get Details] Result Object :"+obj);
long lEndTime = new Date().getTime();
log.info("[Widget][Get Details] Time elapsed For Fetching :"
+ (lEndTime - lStartTime));
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
我们是否可以更快地对现有代码进行更改?任何想法都会被贬低。