Java 执行hibernate查询需要很多时间
我使用hibernate通过简单的“选择”查询获取结果集。但是,它需要很多时间,比如350毫秒、400毫秒、500毫秒。。理想情况下,对于一个简单的查询,它不应该花费这么多时间。当我减少缓存机制时,它检索速度很快。但是,第一次要花很多时间 这是我的密码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
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()之后代码>。然后您只得到查询的时间,而不是数据处理的时间。