我正在使用Spring + Hibernate。下面是我的java方法的代码片段。发出查询后,它等待很长时间。表大小非常小。它间歇性地发生(并非总是如此)。我没有遇到任何例外。你能不能让我知道如何调试这个问题。
代码段:
BigDecimal id = null;
id = (BigDecimal) getHibernateTemplate().execute(new HibernateCallback<Object>() {
public Object doInHibernate(Session session)throws HibernateException, SQLException {
Query roleDetails = session.createSQLQuery("select role_id from employee where emp_id = '"+eid+"'");
return roleDetails.uniqueResult();
}
});
答案 0 :(得分:0)
根据给定的细节,很难理解问题的根本原因。我会建议两件事
代理您的数据源并从java端查看查询执行时间。您可以使用datasource-proxy库来执行此操作。
如果甲骨文方面有问题,请追踪oracle sessions和understand。
答案 1 :(得分:0)
Hibernate和Oracle内部的查询都存在缓存,但只有在使用带参数的预处理语句时它才能正常工作,否则会造成伤害。
尝试将代码中的字符串连接更改为参数化查询:
Query roleDetails = session.createSQLQuery("select role_id from employee where emp_id = ':empId").setInteger("empId", eid);