Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行hibernate查询需要很多时间_Java_Hibernate - Fatal编程技术网

Java 执行hibernate查询需要很多时间

Java 执行hibernate查询需要很多时间,java,hibernate,Java,Hibernate,我使用hibernate通过简单的“选择”查询获取结果集。但是,它需要很多时间,比如350毫秒、400毫秒、500毫秒。。理想情况下,对于一个简单的查询,它不应该花费这么多时间。当我减少缓存机制时,它检索速度很快。但是,第一次要花很多时间 这是我的密码 public JSONObject getWidgetDetails(String userId) { log.info("[Widget][Get Details] Received UserID in Impl :"+user

我使用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;
}
公共JSONObject getWidgetDetails(字符串用户ID){ log.info(“[Widget][Get Details]在Impl中接收到UserID:“+UserID”); JSONObject obj=新的JSONObject(); long lstartime=new Date().getTime(); try(Session Session=factory.openSession()){ 字符串hql=“FROM com.DashboardModel,其中uid=:id”; Query=session.createQuery(hql); query.setParameter(“id”,userId); query.setCacheable(true); List results=query.List(); JSONObject jObj=新的JSONObject(); 对于(int i=0;i
我们可以对现有代码进行更改以更快地检索吗?任何想法都会被告知

检查事项:是否为
uid
和索引字段?是否存在从此实体到其他实体的任何连接,这些连接可能导致子查询?调试打开时,您在控制台上看到了什么?JSON解析是测量时间的一部分。不是查询速度慢。@jr593 uid只是表中的一个普通列。。在控制台中,我看到了时间elapsed@f1sh,我们可以进一步细化它以减少时间吗?将您的
long lEndTime=new Date().getTime()放入紧跟在
列表结果=query.List()之后。然后您只得到查询的时间,而不是数据处理的时间。