花费大量时间执行hibernate查询

时间:2016-04-08 09:31:25

标签: java hibernate

我通过使用简单的“选择”查询来使用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;
}

我们是否可以更快地对现有代码进行更改?任何想法都会被贬低。

0 个答案:

没有答案